VBA 没有SUMPRODUCT 函数。因此,您必须使用 VBA 的 WorksheetFunction 方法以该名称调用 Excel 的函数。这是语法。
Dim MyResult As Double
MyResult = WorksheetFunction.Sumproduct([Arg1],[Arg2],[Arg3],[etc])
Excel 要求每个参数都是一个范围,例如 =SUMPRODUCT(A2:A1,C2:C15,F2:F15, [etc]) 您可以使用 VBA 提供的任何方式创建这些范围。这些方法中的任何一种都可以。
Dim Rng1 As Range
Dim Rng2 As Range
Dim Rng3 As Range
Set Rng1 = Range("A2:A15")
Set Rng2 = Range(Cells(2, 3), Cells(15, 3))
Set Rng3 = Range(Cells(2, "F"), Cells(15, "F))
MyResult = WorksheetFunction.Sumproduct(Rng1, Rng2, Rng3)
当然,指定范围的任何或所有参数都可以是变量。
Dim A As String, B As String
A = Cells(1, 1).Value ' the cell holds a cell or range address or column ID
B = Cells(1, 2). Value
Set Rng1 = Range(A)
Set Rng2 = Range(Cells(2, A), Cells(15, B))
Set Rng3 = Range(Range(A), Range(B))
' or
Dim R As Long, C As Long
R = Cells(Rows.Count, "A").End(xlUp).Row
C = Cells(1, Columns.Count).End(xlToLeft).Column
Set Rng1 = Range(Cells(2, "A"), Cells(R, C))
注意定义单元格的语法:Cells([Row], [Column])。 [Row] 必须始终是一个数字,但 [Column] 可以是一个数字或一个有效的 ID(它是一个字符串)。字符串很难强制转换为地址,执行速度较慢,因为 Excel 必须将它们转换为数字,并且无法计算。因此,建议您在行和列中都使用数字。此类数字的推荐数据类型为Long。