Функция СУММПРОИЗВ в Excel: примеры с условием
Что делает СУММПРОИЗВ, как считать ею сумму и количество по условиям без формул массива и почему она работает там, где СУММЕСЛИМН бессильна.
Коротко
=СУММПРОИЗВ(массив1;массив2;…) перемножает массивы поэлементно и складывает произведения. Самый простой пример — выручка: =СУММПРОИЗВ(B2:B10;C2:C10) умножит каждую цену на своё количество и сложит, без вспомогательного столбца.
Главное применение — условия. Сравнение (A2:A10="Москва") даёт массив ИСТИНА/ЛОЖЬ, а при умножении ИСТИНА становится единицей, ЛОЖЬ — нулём. Перемножив условия и значения, получаем сумму только нужных строк:
=СУММПРОИЗВ((A2:A10="Москва")*(C2:C10))
Чем это лучше СУММЕСЛИМН: внутри можно ставить функции от диапазона — месяц из даты, длину текста, первые буквы, — и условия «ИЛИ». Формулу массива при этом вводить не нужно: СУММПРОИЗВ работает с массивами сама, в любой версии.
То же самое формулой в Excel
=СУММПРОИЗВ(B2:B100;C2:C100) — сумма цена × количество по всем строкам=СУММПРОИЗВ((A2:A100="Москва")*(D2:D100)) — сумма по одному условию=СУММПРОИЗВ((A2:A100="Москва")*(B2:B100="опт")*(D2:D100)) — сумма по двум условиям — «И»=СУММПРОИЗВ(((A2:A100="Москва")+(A2:A100="СПб")>0)*(D2:D100)) — сумма по условию «ИЛИ»: Москва или Санкт-Петербург=СУММПРОИЗВ((МЕСЯЦ(E2:E100)=9)*(D2:D100)) — сумма за сентябрь по столбцу с датами — СУММЕСЛИМН так не умеет=СУММПРОИЗВ(--(ДЛСТР(A2:A100)>10)) — количество ячеек, где текст длиннее 10 знаковПошагово
Собрать сумму по условиям
- Каждое условие запишите в скобках:
(A2:A100="Москва"). - Перемножьте условия между собой — это «И» — и умножьте на столбец, который суммируете.
- Оберните всё в СУММПРОИЗВ.
- Проверьте, что все диапазоны одинаковой длины:
A2:A100иD2:D100, а неD2:D99.
Количество вместо суммы — уберите столбец значений и оставьте только условия: =СУММПРОИЗВ((A2:A100="Москва")*(B2:B100="опт")). Если условие одно, поставьте перед ним два минуса: они превращают ИСТИНА и ЛОЖЬ в единицы и нули.
Условие «ИЛИ» — условия не перемножаются, а складываются, и результат проверяется на «больше нуля», чтобы строка, подходящая под оба условия, не посчиталась дважды.
Где обычно ломается
- #ЗНАЧ! — диапазоны разного размера. У СУММПРОИЗВ они обязаны совпадать по числу строк и столбцов.
- Текст в столбце сумм. Через точку с запятой нечисловые значения идут как нули. Но при умножении
*текст даёт#ЗНАЧ!. Если в столбце попадаются пустые строки из формул, передавайте его отдельным аргументом:=СУММПРОИЗВ((A2:A100="Москва")*1;D2:D100). - Формула тормозит. Не ставьте целые столбцы
A:A: функция честно переберёт миллион строк. Берите диапазон с запасом или умную таблицу. - Условие по тексту не срабатывает. Лишние пробелы в данных: «Москва » не равна «Москва». Почистите СЖПРОБЕЛЫ.
- На английском — SUMPRODUCT. В Google Таблицах работает так же.