SumIfs с аргументом массива - PullRequest
1 голос
/ 14 января 2020

Кто-нибудь знает, как перевести следующее в Excel VBA?

SUM(SUMIFS(Sheet3!H:H, Sheet3!G:G, {"X","Y","Z"}, Sheet3!E:E,"SA"))

Я пытался

WorksheetFunction.Sum(WorksheetFunction.Sumifs(Worksheet("Sheet3!").Range("H:H"),Worksheet("Sheet3!").Range("G:G"), WorksheetFunction.OR("X","Y","Z"),Worksheet("Sheet3!").Range("E:E"),"SA"))

ИЛИ

WorksheetFunction.Sum(WorksheetFunction.Sumifs(Worksheet("Sheet3!").Range("H:H"),Worksheet("Sheet3!").Range("G:G"), "X" or "Y" or "Z",Worksheet("Sheet3!").Range("E:E"),"SA"))

, но я вял get

Тип не соответствует ошибке

или

нет функции Excel

ИЛИ .. ..

Ответы [ 2 ]

0 голосов
/ 14 января 2020

попробуем: в Excel

=SumProduct(H:H*(E:E="SA")*(Substitute("XYZ",G:G,"") <>"XYZ"))

В vba

=Evaluate("=SumProduct(H:H*(E:E =""SA"")*(Substitute(""XYZ"",G:G,"""") <>""XYZ""))")

oR:

=Evaluate("=SUM(SUMIFS(H:H, E:E,""SA"", G:G, {""X"",""Y"",""Z""}))")

Я рекомендую установить минимальный диапазон, не ставя целый столбец замедлит работу формулы и помнит, что ЗАМЕНА чувствительна к регистру

0 голосов
/ 14 января 2020

Вам нужно поздно связать это:

=Application.SumProduct(Application.SumIfs(Worksheets("Sheet3").Range("H:H"),Worksheets("Sheet3").Range("G:G"), Array("X","Y","Z"),Worksheets("Sheet3").Range("E:E"),"SA"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...