实现此代码尝试的方法肯定更简单,但我创建了一个简化的代码来展示我想要实现的目标。基本上我想对大量数据进行计算,我不想将其添加到工作表中。
所以基本上我需要通过使用我在宏中定义的数组在工作表中运行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
答案 0 :(得分:2)
不清楚你为什么要这样做,但是:
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))"
答案 1 :(得分:0)
另一种方法,如果你不需要公式实际上在那个单元格中:
Range("b1").Value = Application.WorksheetFunction.Sum(numbers)
修改:如果您尚未设置Option Base 1
,那么Dim numbers(3) As Double
将创建一个4元素数组(0),...,数字(3),因为默认值为{{ 1}}。我建议使用Base 0
而不是依赖Base选项。
编辑2:您在示例中忘记了Dim numbers(1 to 3) As Double
,或者没有使用Dim I
,这是非常推荐的!
答案 2 :(得分:0)
它必须是工作表中的等式吗?你可以得到总数并把它放在那里:
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