Application.Worksheetfunction Sumproduct问题

时间:2013-10-25 22:24:59

标签: excel vba excel-vba

我有一张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将此公式插入单元格中,我宁愿让它计算该值,然后将结果插入所选单元格。

1 个答案:

答案 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