Суммируйте все строки, если хотя бы одна строка соответствует критериям - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть база данных следующим образом:

У меня возникают проблемы при попытке суммировать все количества по группам, когда флаг «Включено» равен Y хотя бы для одной из групп; то есть: если есть Y хотя бы в одной строке из группы 3, суммируйте все строки из группы 3, независимо от того, включены ли остальные.

Вывод должен быть таким:

Expected output

Спасибо!

1 Ответ

0 голосов
/ 14 ноября 2018

Вам понадобится использовать функцию массива, чтобы решить эту проблему. Чтобы ввести и массив функции, введите функцию, как обычно, затем нажмите Ctrl + Shift + Enter вместо просто Enter. (Клавиатуры Apple отличаются, но у меня нет Apple.)

Я объясню, как я собрал функцию, а затем соберу все вместе.

Во-первых, я хотел получить массив номеров групп, в столбце которого содержится хотя бы одна буква "Y". Этот массив создан IF(B2:B14="Y",A2:A14,0). Результат будет {0,0,0,0,0,0,3,...etc} в примере.

Далее я отмечаю каждую строку группы, в которой есть запись в списке номеров групп, с помощью функции MATCH(A2:A14,IF(B2:B14="Y",A2:A14,0),0).

Поскольку для этого используется точное совпадение, при отсутствии совпадения возникнет ошибка. ISERROR(MATCH(A2:A14,IF(B2:B14="Y",A2:A14,0),0)) дает мне истину, когда нет совпадения, и ложь, когда есть, поэтому я отрицаю это. NOT(ISERROR(MATCH(A2:A14,IF(B2:B14="Y",A2:A14,0),0)))

Другой IF преобразует это в 1 или 0. IF(NOT(ISERROR(MATCH(A2:A14,IF(B2:B14="Y",A2:A14,0),0))),1,0)

Наконец, я свожу это с количеством, используя SUMPRODUCT: =SUMPRODUCT(C2:C14,IF(NOT(ISERROR(MATCH(A2:A14,IF(B2:B14="Y",A2:A14,0),0))),1,0))

Опять же, не забудьте Ctrl + Shift + Enter, чтобы сделать эту работу.

Протестировано в Excel 2013 и работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...