将公式应用于单元格使用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 ,这是非常好的!