1

我有一个 excel 表,我正在尝试使用 countifs 公式来计算满足多个条件的数量或记录,但是在其中一列中有多个条件,所以我将 SUMPRODUCT 与 COUNTIFS 函数一起使用。

我让它在工作表中正常工作,但我不知道如何让它在 VBA 中工作。

这是我尝试过的:

Dim lastrow As Long
lastrow = Sheet2.Cells(Sheet2.Rows.Count, "M").End(xlUp).Row
FirstDate = Sheets("Sheet1").Range("C7")
SecondDate = Sheets("Sheet1").Range("E7")

   Application.Worksheetfunction.Sumproduct(CountIfs(Sheet2.Range("E2:E" & lastrow), ">=" & FirstDate, Sheet2.Range("E2:E" & lastrow), "<=" & SecondDate, Sheet2.Range("P2:P" & lastrow), {"John";"James";"Peter"}))

使用上述公式时,我不断收到错误消息。你能告诉我我做错了什么吗?

提前致谢。

编辑:这是我试图模仿的公式:

=Sumproduct(CountIfs(Sheet2!E2:E1000000,">="&Sheet1!C7,Sheet2!E2:E1000000,"<="&Sheet1!E7,Sheet2!E2:E1000000,{"John";"James";"Peter "}))

我不希望 VBA 将此公式插入单元格,我宁愿让它计算值,然后将结果插入所选单元格。

4

1 回答 1

2

似乎对我有用:

Sub Tester()

    Dim v, wsf
    Dim lastrow As Long

    lastrow = Sheet2.Cells(Sheet2.Rows.Count, "M").End(xlUp).Row

    Set wsf = Application.WorksheetFunction

    v = Application.WorksheetFunction.SumProduct(wsf.CountIfs( _
        Sheet2.Range("E1:E" & lastrow), ">=" & Sheet1.Range("C7").Value, _
        Sheet2.Range("E1:E" & lastrow), "<=" & Sheet1.Range("E7").Value, _
        Sheet2.Range("P1:P" & lastrow), Array("John", "James", "Peter")))

    Debug.Print v

End Sub
于 2013-10-27T20:35:46.127 回答