Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 带条件数组的Sumifs_Excel_Worksheet Function - Fatal编程技术网

Excel 带条件数组的Sumifs

Excel 带条件数组的Sumifs,excel,worksheet-function,Excel,Worksheet Function,我很惊讶我在任何地方都找不到这个,这让我觉得我一定是搞错了。我希望能够在sumifs中包含一系列值,这样它就可以像循环一样对条件中的每个值执行操作(而不必为每个值编写“+sumifs(..)。下面是一个迄今为止我没有工作的示例 `=SUMIFS(Sum,Range1,Criteria1, '[Stores.xlsx]Sheet1'!$H:$H, "Store #"&Regions!$T:$T&"*")` 所以我试图通过区域中的每个值!T:T作为标准。 例如,“Store#150

我很惊讶我在任何地方都找不到这个,这让我觉得我一定是搞错了。我希望能够在sumifs中包含一系列值,这样它就可以像循环一样对条件中的每个值执行操作(而不必为每个值编写“+sumifs(..)。下面是一个迄今为止我没有工作的示例

`=SUMIFS(Sum,Range1,Criteria1, '[Stores.xlsx]Sheet1'!$H:$H, "Store #"&Regions!$T:$T&"*")`
所以我试图通过区域中的每个值!T:T作为标准。
例如,“Store#150 Los Angeles”和“Store#155 San Diego”都需要通过参数传递。当前公式只返回匹配的第一项,而不继续下一项。

我希望这是有意义的。请询问您是否需要更清晰的信息。

我认为最简单的方法是在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

再次强调,我确信有一种方法可以实现公式的循环,但四处搜索,我并不清楚。

您得到的错误是什么?我假设您将公式复制到一个列中,该列的行数与列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 Data.xlsx]Sheet1'!$H:$H,“Store#”和Regions!$T:$T&“*”)这里的Sheet1!L:L是发票上的美元金额,Sheet1!I:I是商品编号,T是商店名称。地区!T:T是商店要匹配的编号列表(一行150,另一行155等)再次感谢您的帮助!到目前为止,我还没有提出任何建议,稍后我会进一步研究。它没有直接解决我的问题,但我确实决定用VBA解决我的问题。感谢您花时间帮助我。