在 VBA 中使用 SUMPRODUCT 公式的变体

问题描述

我想在 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

将 Microsoft Excel 名称转换为对象或值。

Name... Variant .....一个公式或对象的名称,使用命名 Microsoft Excel 的约定。名称的长度必须小于或等于 255 个字符。

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

尝试使用 Evaluate 方法...

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