VBA 中的 SUMPRODUCT 公式

Adn*_*nan 4 excel vba excel-formula

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

=SUMPRODUCT((Sale!$J$5:$J$1048576=C12)*Sale!$D$5:$D$1048576,Sale!$M$5:$M$1048576)
Run Code Online (Sandbox Code Playgroud)

我使用了这段代码,但它给出了一个错误

运行时错误“13”:类型不匹配

Dim slWks As Worksheet

Set slWks = Sheets("Sale")
ActiveSheet.Range("F12").Value = _
Application.WorksheetFunction.SumProduct((slWks.Range("J5:J1048576") = _
    ActiveSheet.Range("C12")) * slWks.Range("D5:D1048576"), slWks.Range("M5:M1048576"))
Run Code Online (Sandbox Code Playgroud)

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

Ror*_*ory 5

考虑到工作表函数方法不适用于您正在使用的大小的数组,有两种可能的简单解决方案:

首先,添加公式,然后将其替换为其值

With activesheet.Range("F12")
   .Formula =" =SUMPRODUCT((Sale!$J$5:$J$1048576=C12)*Sale!$D$5:$D$1048576,Sale!$M$5:$M$1048576)"
   .Value2 = .Value2
End With
Run Code Online (Sandbox Code Playgroud)

二、使用Evaluate

With Activesheet
   .range("F12").Value2 = .Evaluate("SUMPRODUCT((Sale!$J$5:$J$1048576=C12)*Sale!$D$5:$D$1048576,Sale!$M$5:$M$1048576)")
End With
Run Code Online (Sandbox Code Playgroud)