将公式应用于单元格使用VBA定义的数组
确实有更简单的方法来实现这个代码试图做的事情,但是我创build了一个简化的代码来展示我正在尝试实现的内容。 基本上我想对大量的数据进行计算,我不想不得不把它添加到工作表。
所以基本上我需要通过使用我在我的macros中定义的数组,在工作表中运行像sum,averageifs等公式。 在这一点上,我不知道如何将这个数组,包含5个值,到“= sum()”函数。 在此先感谢您的帮助!
Sub ArraySum() Dim numbers(5) As Double Dim E As Double For I = 1 To 5 E = Cells(I, 1) numbers(I) = Cos(E) Next I Range("b1").Formula = "=sum(" & numbers & ")" End Sub
目前还不清楚你为什么要这样做,但是:
Sub ArraySum() Dim numbers(1 To 5) '<<< Dim E As Double For I = 1 To 5 E = Cells(I, 1) numbers(I) = Cos(E) Next I Range("B1").Formula = "=SUM(" & Join(numbers, ",") & ")" End Sub
但是你也可以这样做:
Range("B1").FormulaArray = "=SUM(COS(A1:A5))"
它是否必须是工作表中的等式? 你可以得到总数,并把它放在那里:
Sub ArraySum() Dim numbers(1 To 5) '<<< Dim E As Double For I = 1 To 5 E = Cells(I, 1) numbers(I) = Cos(E) Next I Range("B1").Value = Application.WorksheetFunction.Sum(numbers) End Sub
另一种方法,如果你不需要公式实际上在该单元格中:
Range("b1").Value = Application.WorksheetFunction.Sum(numbers)
编辑:如果你还没有设置Option Base 1
然后Dim numbers(3) As Double
将创build一个4元素数组(0),…,数字(3),因为默认是Base 0
。 我会build议使用Dim numbers(1 to 3) As Double
而不是依靠基础选项。
编辑2:你或者忘记了你的例子中的Dim I
,或者不要使用Option Explicit
,这是非常好的!