我试图将数组公式中的值作为数组输入到VBA中。简单的例子:我有一个单元格(让我们说D1),其中有一个数组公式,如
= A1:A10 * B1:B10
当我在电子表格中突出显示这一点并按F9时,我会得到一个包含10个数字的数组,比如= {5; 12; 15; 24; 25; 24; 42; 40; 54; 70}
我希望能够将这些值存储在VBA数组中:a(0)= 5,a(1)= 12,a(3)= 15等;你明白了。
尝试在这个问题上寻找答案,但即使在MSFT上也找不到任何相关内容。关于如何从VBA转到工作表范围(我知道那个)的大量答案,但不是这样的。看着尝试通过ParamArray(通过修复的元素数量)来实现它,通过直接分配到一个未扩展的数组并通过EVALUATE(范围),但我无法使这些中的任何一个工作。我觉得我必须遗漏一些明显的东西。
答案 0 :(得分:3)
不确定你已经尝试了什么。但是Evaluate
应该有用。
如果我有以下内容:
代码:
Sub getArrayFormulaResult()
sFormula = Range("D1").FormulaArray
aResult = Evaluate(sFormula)
MsgBox Join(Application.Transpose(aResult), ",")
End Sub
将导致:
答案 1 :(得分:2)
试试这个
Dim var as variant
var=Worksheets("MySheet").Evaluate(Worksheets("MySheet").Range("D1").formula)
请注意,当Mysheet不是活动工作表时,您应该使用Worksheet.Evaluate来确保这一点。结果将始终是2_D数组(示例数组公式有一列)