Суффи с массивом условно
Я удивлен, что нигде не могу найти это, что заставляет меня думать, что я должен идти об этом неправильно. Я хочу иметь возможность включить ряд значений в sumifs, чтобы он работал как цикл для каждого значения в условном выражении (без необходимости записывать " +sumifs(....) для каждого значения. Вот пример того, что я пока что не работает
`=SUMIFS(Sum,Range1,Criteria1, '[Stores.xlsx]Sheet1'!$H:$H, "Store #"&Regions!$T:$T&"*")`
Поэтому я пытаюсь передать каждое значение в регионах!T:T в качестве критерия.
Например, "Магазин № 150 Лос-Анджелес" и "Магазин № 155 Сан-Диего" должны быть переданы через аргумент. В настоящее время формула просто возвращает первый соответствующий элемент и не переходит к следующему элементу.
Я надеюсь, что в этом есть смысл. Пожалуйста, спросите, если вам нужно больше ясности.
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
Опять же, я уверен, что есть способ сделать этот цикл с формулой, но, глядя вокруг, это не было очевидно для меня.