在 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 & ")")
我想在 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 & ")")