Sumifs with Array条件

时间:2011-07-13 21:57:10

标签: excel worksheet-function

我很惊讶我无法在任何地方找到这个让我觉得我必须正确地解决这个问题。我希望能够在sumifs中包含一系列值,因此它对条件中的每个值执行就像一个循环(不必为每个值写一个“+ sumifs(....)。这是我的一个例子到目前为止还没有工作

`=SUMIFS(Sum,Range1,Criteria1, '[Stores.xlsx]Sheet1'!$H:$H, "Store #"&Regions!$T:$T&"*")`

所以我试图传递Regions中的每个值!T:T作为标准 例如,“Store#150 Los Angeles”和“Store#155 San Diego”都需要通过参数传递。目前公式只返回它匹配的第一个项目,而不是继续下一个项目 我希望这是有道理的。请询问您是否需要更清晰。

1 个答案:

答案 0 :(得分:1)

我认为最简单的方法是在T列旁边启动一个“中间”列,为该列的每一行执行sumifs,然后将该列与另一个单元格相加。表格甚至只是数组总和在这里也可能有用。

我在VBA中提出了以下内容,但我无法完全测试它:

Option Explicit
Function SumSumIfs(ByVal inp As Range) As Integer

    Dim i As Integer
    Dim QBData As Worksheet
    Dim Stores As Worksheet

    Set QBData = Workbooks.Open("QBData.xlsx").Sheets("Sheet1")
    Set Stores = Workbooks.Open("Stores.xlsx").Sheets("Sheet1")

    Dim QBRange1, QBRange2, SalesRange As Range

    Set QBRange1 = QBData.Range("H1:H" & Range("H1").End(xlDown).Row)
    Set QBRange2 = QBData.Range("I1:I" & Range("I1").End(xlDown).Row)
    Set SalesRange = QBData.Range("H1:H" & QBData.Range("H1").End(xlDown).Row)


    For i = 1 To inp.End(xlDown).Row
      SumSumIfs = SumSumIfs + Application.WorksheetFunction.SumIfs(QBRange1, QBRange2, _
                  "=" & Stores.Cells(16, 5), StoreRange3, "=" & inp.Cells(i, 19))
    Next i

End Function

同样,我确信有一种方法可以使用公式进行循环,但是搜索一下,这对我来说并不明显。