使用Excel VBA宏,我正在构建一个excel表(listobject),它包含几个数据列(包含值)和一个包含公式的列 . 这些公式对于每一行都是不同的 . 这些公式由vba构造并存储在一个数组中,并且最后只放在表列中一次 . 这对于速度问题是必要的 .
我的问题是存储在列中的结果公式都是相同的 . 它们是数组第一个元素中的一个 .
笔记:
-
"AutoFillFormulasInLists"设置为FALSE .
-
如果我尝试存储值而不是公式,一切正常 .
-
如果我尝试做同样的逻辑,但把公式放在一个简单的单元格范围内,一切正常 .
这是一个非常简化的代码示例,我用于使用公式来填充表的列:
Dim sformulas(1 To 3) As String
sformulas(1) = "=""x"""
sformulas(2) = "=""y"""
sformulas(3) = "=""z"""
ActiveSheet.ListObjects("Table1").ListColumns("ColumnX").DataBodyRange.Formula = Application.Transpose(sformulas)
ColumnX中的结果公式全为=“x”
但我希望有=“x”,=“y”和=“z”
有没有办法在表格中存储适当的公式?
1 回答
我可以重现错误的唯一方法是第一个值是字符串公式的字符串 . 我无法用其他方式重现它 .
工作得很好 . 但
a = Array("=""x""", "y", "z")
产生所有"x" .虽然我无法解释为什么会这样,但我可以解决这个问题 . 你不必要地使用公式来表示常数 . 只需使用
Array("x", "y", "z")
和DataBodyRange.Value
而不是公式(尽管它们都具有相同的效果 . )如果使用公式将单元格保存为TEXT,则将范围的
Numberformat
设置为“常规”到“文本” .这将给出“0001”,“0004”,“0002”而不是1,4,2 .