我有一张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(Sheet 2中E2:E1000000, “&GT; =” &安培;工作表Sheet C7,Sheet2的E2:!E1000000, “&LT =” &安培; Sheet 1中E7,Sheet2的E2:!!! E1000000,{”约翰 “;” 詹姆斯 “;” 彼得“}))
我不希望VBA将此公式插入单元格中,我宁愿让它计算该值,然后将结果插入所选单元格。
答案 0 :(得分: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