根据对多个条件的引用对多个列求和 - VBA不转换

时间:2017-02-28 04:23:23

标签: excel vba filter

我的代码是=SUMPRODUCT(H50:AA69*(H5:AA5=B10)*ISNUMBER(MATCH(F50:F69,K18:K24,0)))

其中h50:aa69是我的数据表,而h5:aa5是我的年份行(b10是我用来过滤数据表的标准年份,将选择范围缩小到单个列)。 F50:F69是一列标识符,我的标准范围K18:K24将进一步过滤掉单列中的行。

我的公式适用于Excel。我尝试将其翻译成VBA,但我无法让它发挥作用。有谁知道为什么?

Sheet72.Range("C22") = Application.WorksheetFunction.SumProduct((Sheet32. _
Range("h50:AA69")) * (Sheet32.Range("H5:AA5") = year) * _
Application.WorksheetFunction.IsNumber(Application.WorksheetFunction. _
Match(Sheet32.Range("f50:f69"), Sheet72.Range("K18:K24"), 0)))

1 个答案:

答案 0 :(得分:0)

@Tim Williams的意思(我认为)你需要捕捉Application.WorksheetFunction.Match失败的可能性,因为在Sheet72.Range("K18:K24")找不到匹配,它会重新发出错误。

请参阅以下代码中添加的If条件:

If Not IsError(Application.Match(Sheet32.Range("F50:F69"), Sheet72.Range("K18:K24"), 0)) Then
    Sheet72.Range("C22") = Application.WorksheetFunction.SumProduct((Sheet32.Range("h50:AA69")) * _
    (Sheet32.Range("H5:AA5") = Year) * _
    Application.WorksheetFunction.IsNumber(Application.WorksheetFunction. _
    Match(Sheet32.Range("f50:f69"), Sheet72.Range("K18:K24"), 0)))
Else
    MsgBox "Match failed"
End If