在 VBA 中使用 SUMPRODUCT 公式的变体

Using a variant of the SUMPRODUCT formula in VBA

我想在 VBA 中使用以下类型的 SUMPRODUCT 公式:

=SUMPRODUCT(A1:A2,C1/B1:B2)

它在 excel 中工作正常,但当它用作 VBA 函数时,它会给出一个 #VALUE!结果:

Function Test(LineA As Range, LineB As Range, ValueC As Double)

Test = Application.WorksheetFunction.SumProduct(LineA, ValueC / LineB)

End Function

如何使用 vba 编写该公式及其值?

将其包装在 evaluate

Converts a Microsoft Excel name to an object or a value.

Name... Variant .....A formula or the name of the object, using the naming convention of Microsoft Excel. The length of the name must be less than or equal to 255 characters.

Application.Evaluate("=SUMPRODUCT(A1:A2,C1/B1:B2)")

尝试使用评估方法...

Function Test(LineA As Range, LineB As Range, ValueC As Double)

    Test = Evaluate("SUMPRODUCT(" & LineA.Address(external:=True) & "," & LineB.Address(external:=True) & "/" & ValueC)

End Function

与上述非常相似 - 但以防万一它对任何人都有帮助,这是我参考 sheet 名称和可变列长度

所做的

Set a = Sheets("TheSheetName").Range([M10], [M10000].End(xlUp)) 设置 b = Sheets("TheSheetName").Range([L10], [L10000].End(xlUp))

c = Application.Evaluate("=SUMPRODUCT(" & a.Address & ",1/" & b.Address & ")")