[英]Apply Formula to Cell Using a VBA defined Array
肯定有更简单的方法可以实现此代码要执行的操作,但是我创建了一个简化的代码来显示我要实现的功能。 基本上,我想对大量数据执行计算,而不必将其添加到工作表中。
因此,基本上,我需要使用在宏中定义的数组在工作表中运行诸如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))"
如果您不需要公式实际位于该单元格中的另一种方式:
Range("b1").Value = Application.WorksheetFunction.Sum(numbers)
编辑:如果尚未设置Option Base 1
则Dim numbers(3) As Double
将创建一个4元素的数组numbers(0),...,numbers(3),因为默认值为Base 0
。 我建议将Dim numbers(1 to 3) As Double
而不是依赖于Base选项。
编辑2:您要么在示例中忘记了Dim I
,要么不使用高度推荐的Option Explicit
!
它必须是工作表中的方程式吗? 您可以将总数放到那里:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.