【问题标题】:Sumifs with Array conditional带有条件数组的 Sumifs
【发布时间】:2011-07-13 21:57:10
【问题描述】:

我很惊讶我在任何地方都找不到这个,这让我觉得我一定是做错了。我希望能够在 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”都需要通过参数传递。目前,该公式仅返回它匹配的第一项,不会继续到下一项。
我希望这是有道理的。请询问您是否需要更清楚。

【问题讨论】:

  • 您遇到的错误是什么?我假设您将公式复制到与列 T 具有相同行数的列中?
  • 感谢您的回复!我只得到第一个匹配值。在这种情况下,我会得到 Store #150 但不是 Store #155 的结果。我没有使用相同数量的列,因为我试图在一列上添加所有匹配的商店。我看到的唯一选择是将代码编写为=SUMIFS(Sum,Range1,Criteria1, '[Stores.xlsx]Sheet1'!$H:$H, "Store #"&Regions!$T3&"*")+ SUMIFS(Sum,Range1,Criteria1, '[Stores.xlsx]Sheet1'!$H:$H, "Store #"&Regions!$T4&"*") 等。但是我必须使用 40 行不同的行。
  • 我确信有一种使用公式的方法,但我不确定那会是什么。使用在范围内循环的 VBA 函数可能更容易做到这一点。 Sum、Range1 和 Criteria1 的值是多少?
  • '=SUMIFS('[QB Data.xlsx]Sheet1'!$L:$L,'[QB Data .xlsx]Sheet1'!$I:$I,E16,'[QB 数据.xlsx]Sheet1'!$H:$H, "Store #"&Regions!$T:$T&"*")' 这里 Sheet1!L:L 是发票上的美元金额,Sheet1!I:I 是商品number 和 T 是商店的名称。 Regions!T:T 是商店要匹配的数字列表(一行 150,另一行 155 等)再次感谢您的帮助!
  • 我还没有想出任何东西,我稍后再看。

标签: excel worksheet-function


【解决方案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

再次,我确信有一种方法可以使用公式循环执行此操作,但四处搜索,对我来说并不明显。

【讨论】:

  • 它并没有直接解决我的问题,但我确实决定在 VBA 中解决我的问题。感谢您花时间帮助我。
猜你喜欢
  • 2014-10-04
  • 2019-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多