Функция СУММПРОИЗВ (SUMPRODUCT) в Excel
Возможности !SEMTools
↑ Навигация по задачам в Excel и возможностям надстройки !SEMTools ↑

Функция СУММПРОИЗВ в Excel перемножает соответствующие элементы диапазонов и складывает произведения: =СУММПРОИЗВ(B2:B10;C2:C10) — это сумма «количество × цена» по всем строкам без вспомогательного столбца. Главное её применение — подсчёт сумм и количества с условиями прямо внутри формулы: =СУММПРОИЗВ((A2:A10="Москва")*(C2:C10>100)*D2:D10). Условия перемножаются (это И) или складываются (это ИЛИ), а формулу не нужно вводить через Ctrl+Shift+Enter. На английском функция называется SUMPRODUCT.

Функция СУММПРОИЗВ в Excel - простой пример применения
Простейший пример применения функции СУММПРОИЗВ
Раздел функцийМатематические
Название и описание на английскомSUMPRODUCT
ВолатильностьНе волатильная
Похожие функцииСУММ, СУММЕСЛИ, ПРОИЗВЕД
Похожие процедурыСводные таблицы

Что делает функция СУММПРОИЗВ

Эта функция использует как минимум два диапазона или массива, перемножая и суммируя их элементы.

Реклама

Значения в первом диапазоне умножаются на соответствующие по порядку значения во втором и так далее.

Сумма всех таких произведений является результатом расчета.

Наиболее часто функция используется как аналог функции СУММЕСЛИ с множественными условиями.

СУММПРОИЗВ с условиями: И, ИЛИ, количество
F3=СУММПРОИЗВ((A2:A6="Москва")*(C2:C6>100)*C2:C6)
ABCDEF
1ГородКаналСуммаУсловиеИтог
2МоскваПоиск150Москва330=СУММПРОИЗВ((A2:A6="Москва")*C2:C6)
3КазаньРСЯ90Москва и > 100260=СУММПРОИЗВ((A2:A6="Москва")*(C2:C6>100)*C2:C6)
4МоскваРСЯ70Москва ИЛИ Казань420=СУММПРОИЗВ(((A2:A6="Москва")+(A2:A6="Казань"))*C2:C6)
5ТулаПоиск60Строк Москва3=СУММПРОИЗВ(--(A2:A6="Москва"))
6МоскваПоиск110

Сравнение (A2:A6="Москва") даёт массив ИСТИНА/ЛОЖЬ; при умножении он становится 1 и 0 и «обнуляет» неподходящие строки. Умножение условий — И, сложение — ИЛИ. Двойной минус превращает ИСТИНА/ЛОЖЬ в 1/0, чтобы просто посчитать строки.

В английском Excel: =SUMPRODUCT((A2:A6="Москва")*(C2:C6>100)*C2:C6)

  1. Преимущество СУММПРОИЗВ перед сводными таблицами заключается в том, что в сводных таблицах фильтр для построения среза всегда точное соответствие (как в примере 1). А "фильтр по подписи", если выводить фильтруемые значения в строки, позволяет фильтровать только по одному условию. СУММПРОИЗВ позволяет использовать все варианты как строкового сравнения (содержит, начинается с, заканчивается на, совпадает), так и численного (больше, меньше, равно, не равно, больше или равно, меньше или равно).
  2. Второе преимущество СУММПРОИЗВ перед сводными таблицами в том, что один критерий фильтрации в сводных таблицах нельзя использовать дважды. СУММПРОИЗВ позволяет обращаться к одному и тому же столбцу многократно.
  3. Преимущество СУММПРОИЗВ перед функцией СУММЕСЛИМН в том, что условная логика СУММЕСЛИМН - строгое выполнение всех условий, по типу "И". Возможность использовать любые логические операции над массивами булевых значений дает полнейшую свободу действий по совмещению условий в любых логических комбинациях - И, ИЛИ, ЕСЛИ, НЕ.

СУММПРОИЗВ: формат результата и исходных данных

Диапазоны должны быть однонаправленными, содержать одинаковое количество элементов и иметь одинаковую размерность по вертикали или горизонтали. Конкретные адреса диапазонов при этом не имеют значения.

Размер диапазонов и текст
F3=СУММПРОИЗВ(A2:A4;B2:B3)
ABCDEF
1ABТекстФормулаРезультат
225штодинаковые диапазоны26=СУММПРОИЗВ(A2:A4;B2:B4)
3443разный размер#ЗНАЧ!=СУММПРОИЗВ(A2:A4;B2:B3)
410текст считается нулём12=СУММПРОИЗВ(A2:A4;C2:C4)

Диапазоны должны совпадать по размеру, иначе #ЗНАЧ!. Текст и пустые ячейки при перемножении через «;» считаются нулями: 2×0 + 4×3 + 1×0 = 12.

Диапазоны могут иметь несколько столбцов и строк одновременно. Обычно используются вертикальные диапазоны шириной 1 столбец.

Синтаксис функции СУММПРОИЗВ

=СУММПРОИЗВ(массив1;[массив2];[массив3];...)
Сумма произведений
E2=СУММПРОИЗВ(B2:B5;C2:C5)
ABCDE
1ТоварКол-воЦенаВыручка
2Кресло3450031200=СУММПРОИЗВ(B2:B5;C2:C5)
3Стол2620031200=СУММ(B2:B5*C2:C5)
4Стул10450
5Лампа1800

3×4500 + 2×6200 + 10×450 + 1×800 = 31 200. СУММ с умножением массивов даёт то же, но в Excel 2019 и старше требует Ctrl+Shift+Enter, а СУММПРОИЗВ — нет.

В английском Excel: =SUMPRODUCT(B2:B5,C2:C5)

Средневзвешенное значение и подсчёт с учётом регистра

СУММПРОИЗВ — стандартный способ посчитать средневзвешенную величину: сумма произведений значений на веса, делённая на сумму весов. А в связке с СОВПАД она считает ячейки с учётом регистра, чего не умеет СЧЁТЕСЛИ.

Средневзвешенная цена и точное совпадение
E2=СУММПРОИЗВ(B2:B4;C2:C4)/СУММ(C2:C4)
ABCDEFGH
1ПартияЦенаКол-воСредневзв. ценаКод«ABC» точно
2110010112,5=СУММПРОИЗВ(B2:B4;C2:C4)/СУММ(C2:C4)ABC2=СУММПРОИЗВ(--СОВПАД(G2:G5;"ABC"))
321205abc
431305ABC
5Abc

(100×10 + 120×5 + 130×5) / 20 = 112,5 — обычное СРЗНАЧ дало бы 116,67. СОВПАД сравнивает с учётом регистра, поэтому найдено 2 «ABC» из 4 вариантов.

В английском Excel: =SUMPRODUCT(B2:B4,C2:C4)/SUM(C2:C4)

Примеры формул с функцией СУММПРОИЗВ

Рассмотрим подробно сложный пример с 4 условиями.

Задача маркетолога - посчитать сумму по четырем условиям:

  1. Дата начала недели - 13 апреля или позднее
  2. В названии кампании присутствует слово Brand
  3. При этом кампания заканчивается на BY (Белоруссия)
  4. Или заканчивается на UA (Украина)

Строки, удовлетворяющие всем четырем условиям, выделены зеленым цветом. Как составить формулу, которая учла бы только их?

Формулу можно наблюдать на скриншоте в ячейке H9.

Сложный пример с функцией СУММПРОИЗВ в Excel

Фактически она является суммой произведения двух диапазонов - массива чисел D3:D34 и массива нулей и единиц. Рассмотрим ее поближе:

Объяснение логики составной формулы с СУММПРОИЗВ

Массив нулей и единиц рождается произведением трех формул массива, третья из которых получается сложением двух других формул массива и применением функции ЗНАК.

В каждой строке указано одно из четырех условий, на основе которых эти формулы создаются:

(ЗНАЧЕН(ЛЕВСИМВ($A$3:$A$34;8))>=$H$2)
Условие 1: дата недели ≥ 13.04
D2=ЗНАЧЕН(ЛЕВСИМВ(A2;8))>=$G$2
ABCDEFG
1НеделяКампанияКликиУсловие 1: дата недели ≥ 13.04ПараметрЗначение
206.04.20 - 12.04.20Brand_Search_BY120ЛОЖЬ=ЗНАЧЕН(ЛЕВСИМВ(A2;8))>=$G$2С даты13.04.20
313.04.20 - 19.04.20Brand_Search_BY150ИСТИНА=ЗНАЧЕН(ЛЕВСИМВ(A3;8))>=$G$2СловоBrand
413.04.20 - 19.04.20Generic_Search_UA90ИСТИНА=ЗНАЧЕН(ЛЕВСИМВ(A4;8))>=$G$2Конец 1BY
520.04.20 - 26.04.20Brand_RSY_UA70ИСТИНА=ЗНАЧЕН(ЛЕВСИМВ(A5;8))>=$G$2Конец 2UA
620.04.20 - 26.04.20Brand_Search_RU60ИСТИНА=ЗНАЧЕН(ЛЕВСИМВ(A6;8))>=$G$2
727.04.20 - 03.05.20brand_search_ua110ИСТИНА=ЗНАЧЕН(ЛЕВСИМВ(A7;8))>=$G$2

ЛЕВСИМВ берёт «13.04.20», ЗНАЧЕН превращает текст в дату, после чего её можно сравнить с G2.

это выражение создает массив булевых значений ИСТИНА и ЛОЖЬ. Функция ЛЕВСИМВ($A$3:$A$34;8) извлекает из диапазона дат в столбце A первые 8 символов, обозначающие дату, а функция ЗНАЧЕН преобразует их в числовой формат, иначе сравнение с ячейкой H2 не будет происходить корректно, т.к. функция ЛЕВСИМВ - текстовая, и возвращает строку.

НЕ(ЕОШ(ПОИСК($H$4;$B$3:$B$34)))
Условие 2: в названии есть «Brand»
D4=НЕ(ЕОШ(ПОИСК($G$3;B4)))
ABCDEFG
1НеделяКампанияКликиУсловие 2: в названии есть «Brand»ПараметрЗначение
206.04.20 - 12.04.20Brand_Search_BY120ИСТИНА=НЕ(ЕОШ(ПОИСК($G$3;B2)))С даты13.04.20
313.04.20 - 19.04.20Brand_Search_BY150ИСТИНА=НЕ(ЕОШ(ПОИСК($G$3;B3)))СловоBrand
413.04.20 - 19.04.20Generic_Search_UA90ЛОЖЬ=НЕ(ЕОШ(ПОИСК($G$3;B4)))Конец 1BY
520.04.20 - 26.04.20Brand_RSY_UA70ИСТИНА=НЕ(ЕОШ(ПОИСК($G$3;B5)))Конец 2UA
620.04.20 - 26.04.20Brand_Search_RU60ИСТИНА=НЕ(ЕОШ(ПОИСК($G$3;B6)))
727.04.20 - 03.05.20brand_search_ua110ИСТИНА=НЕ(ЕОШ(ПОИСК($G$3;B7)))

ПОИСК не различает регистр, поэтому «brand_search_ua» тоже подходит. В Excel 2010+ то же короче: ЕЧИСЛО(ПОИСК($G$3;B2)).

- это выражение также создает массив булевых значений. Функция ПОИСК ищет внутри каждой ячейки столбца слово "BRAND", если оно не найдено, возвращается ошибка, а если найдено - позиция его первого символа в строке. Функцией ЕОШ мы превращаем ошибки в единицы, а их отсутствия - в нули. И далее функцией отрицания НЕ получаем нужный нам массив.

Функций "Заканчивается на" в Excel нет, но можно делать простую проверку - если последние символы в строке совпадают со словом, что это, как не вхождение? Эту операцию и производит выражение

(ПРАВСИМВ($B$3:$B$34;ДЛСТР($J$2))=$J$2)

Тут нам помогают функции ДЛСТР и ПРАВСИМВ. Проверяя, совпадают ли последние 2 символа с ячейкой J2, мы также возвращаем массив булевых значений.

Четвертое условие аналогично третьему, как и его выражение:

(ПРАВСИМВ($B$3:$B$34;ДЛСТР($J$4))=$J$4)
Условия 3–4: заканчивается на BY или UA
D6=ЗНАК((ПРАВСИМВ(B6;ДЛСТР($G$4))=$G$4)+(ПРАВСИМВ(B6;ДЛСТР($G$5))=$G$5))=1
ABCDEFG
1НеделяКампанияКликиУсловия 3–4: заканчивается на BY или UAПараметрЗначение
206.04.20 - 12.04.20Brand_Search_BY120ИСТИНА=ЗНАК((ПРАВСИМВ(B2;ДЛСТР($G$4))=$G$4)+(ПРАВСИМВ(B2;ДЛСТР($G$5))=$G$5))=1С даты13.04.20
313.04.20 - 19.04.20Brand_Search_BY150ИСТИНА=ЗНАК((ПРАВСИМВ(B3;ДЛСТР($G$4))=$G$4)+(ПРАВСИМВ(B3;ДЛСТР($G$5))=$G$5))=1СловоBrand
413.04.20 - 19.04.20Generic_Search_UA90ИСТИНА=ЗНАК((ПРАВСИМВ(B4;ДЛСТР($G$4))=$G$4)+(ПРАВСИМВ(B4;ДЛСТР($G$5))=$G$5))=1Конец 1BY
520.04.20 - 26.04.20Brand_RSY_UA70ИСТИНА=ЗНАК((ПРАВСИМВ(B5;ДЛСТР($G$4))=$G$4)+(ПРАВСИМВ(B5;ДЛСТР($G$5))=$G$5))=1Конец 2UA
620.04.20 - 26.04.20Brand_Search_RU60ЛОЖЬ=ЗНАК((ПРАВСИМВ(B6;ДЛСТР($G$4))=$G$4)+(ПРАВСИМВ(B6;ДЛСТР($G$5))=$G$5))=1
727.04.20 - 03.05.20brand_search_ua110ИСТИНА=ЗНАК((ПРАВСИМВ(B7;ДЛСТР($G$4))=$G$4)+(ПРАВСИМВ(B7;ДЛСТР($G$5))=$G$5))=1

Сложение двух проверок — это ИЛИ; ЗНАК превращает 2 в 1. Сравнение «=» тоже не учитывает регистр, поэтому «ua» = «UA».

Условная логика ИЛИ воспроизводится методом сложения двух булевых массивов. При этом они становятся числами. ИСТИНА+ЛОЖЬ (и наоборот) дают 1, ЛОЖЬ+ЛОЖЬ дают 0, ИСТИНА+ИСТИНА дают 2. Чтобы не исказить данные, мы используем функцию ЗНАК - она возвращает для положительных чисел 1, а для 0 - 0. Таким образом, мы получаем массив нулей и единиц на основе двух булевых массивов.

Произведение трех массивов дает нам единый массив нулей и единиц, умножая который на значения показов, кликов и скачиваний, мы получаем суммы отфильтрованных таким образом значений. Числа, где условия не соблюдены, "уничтожаются" нулями, а числа, где соблюдены - умножаются на 1 и складываются.

У наблюдательного читателя может возникнуть вопрос, почему мы не пользуемся функцией ИЛИ для объединения последних двух булевых массивов. Ответ: к сожалению, она не сочетает массивы попарно (как и функция И), а рассматривает каждую ячейку массива как равноправный элемент.

Именно поэтому используются арифметические функции.

  • вместо И - умножение
  • а вместо ИЛИ - сложение + функция ЗНАК.
Итоговая формула: сумма по 4 условиям
H2=СУММПРОИЗВ(C2:C7*(ЗНАЧЕН(ЛЕВСИМВ(A2:A7;8))>=G2)*НЕ(ЕОШ(ПОИСК(G3;B2:B7)))*ЗНАК((ПРАВСИМВ(B2:B7;ДЛСТР(G4))=G4)+(ПРАВСИМВ(B2:B7;ДЛСТР(G5))=G5)))
ABCDEFGH
1НеделяКампанияКликиВсе условияПараметрЗначениеИтого кликов
206.04.20 - 12.04.20Brand_Search_BY1200=(ЗНАЧЕН(ЛЕВСИМВ(A2;8))>=$G$2)*НЕ(ЕОШ(ПОИСК($G$3;B2)))*ЗНАК((ПРАВСИМВ(B2;ДЛСТР($G$4))=$G$4)+(ПРАВСИМВ(B2;ДЛСТР($G$5))=$G$5))С даты13.04.20330=СУММПРОИЗВ(C2:C7*(ЗНАЧЕН(ЛЕВСИМВ(A2:A7;8))>=G2)*НЕ(ЕОШ(ПОИСК(G3;B2:B7)))*ЗНАК((ПРАВСИМВ(B2:B7;ДЛСТР(G4))=G4)+(ПРАВСИМВ(B2:B7;ДЛСТР(G5))=G5)))
313.04.20 - 19.04.20Brand_Search_BY1501=(ЗНАЧЕН(ЛЕВСИМВ(A3;8))>=$G$2)*НЕ(ЕОШ(ПОИСК($G$3;B3)))*ЗНАК((ПРАВСИМВ(B3;ДЛСТР($G$4))=$G$4)+(ПРАВСИМВ(B3;ДЛСТР($G$5))=$G$5))СловоBrand
413.04.20 - 19.04.20Generic_Search_UA900=(ЗНАЧЕН(ЛЕВСИМВ(A4;8))>=$G$2)*НЕ(ЕОШ(ПОИСК($G$3;B4)))*ЗНАК((ПРАВСИМВ(B4;ДЛСТР($G$4))=$G$4)+(ПРАВСИМВ(B4;ДЛСТР($G$5))=$G$5))Конец 1BY
520.04.20 - 26.04.20Brand_RSY_UA701=(ЗНАЧЕН(ЛЕВСИМВ(A5;8))>=$G$2)*НЕ(ЕОШ(ПОИСК($G$3;B5)))*ЗНАК((ПРАВСИМВ(B5;ДЛСТР($G$4))=$G$4)+(ПРАВСИМВ(B5;ДЛСТР($G$5))=$G$5))Конец 2UA
620.04.20 - 26.04.20Brand_Search_RU600=(ЗНАЧЕН(ЛЕВСИМВ(A6;8))>=$G$2)*НЕ(ЕОШ(ПОИСК($G$3;B6)))*ЗНАК((ПРАВСИМВ(B6;ДЛСТР($G$4))=$G$4)+(ПРАВСИМВ(B6;ДЛСТР($G$5))=$G$5))
727.04.20 - 03.05.20brand_search_ua1101=(ЗНАЧЕН(ЛЕВСИМВ(A7;8))>=$G$2)*НЕ(ЕОШ(ПОИСК($G$3;B7)))*ЗНАК((ПРАВСИМВ(B7;ДЛСТР($G$4))=$G$4)+(ПРАВСИМВ(B7;ДЛСТР($G$5))=$G$5))

Столбец D — произведение трёх условий: 1 только там, где выполнены все. СУММПРОИЗВ умножает клики на эти единицы и нули и складывает: 150 + 70 + 110 = 330. Отдельный столбец D не нужен — он показан для наглядности.

В английском Excel: =SUMPRODUCT(C2:C7*(VALUE(LEFT(A2:A7,8))>=G2)*NOT(ISERR(SEARCH(G3,B2:B7)))*SIGN((RIGHT(B2:B7,LEN(G4))=G4)+(RIGHT(B2:B7,LEN(G5))=G5)))


Другие примеры с СУММПРОИЗВ:

Найти повторяющиеся значения в Excel

Почему СУММПРОИЗВ возвращает ошибку или 0

  • #ЗНАЧ!. Диапазоны разного размера или в одном из них есть ошибка (#Н/Д, #ДЕЛ/0!).
  • Результат 0. Условие сравнивается с числом, сохранённым как текст, или условия ИСТИНА/ЛОЖЬ переданы через «;» без умножения — используйте * или --.
  • Формула тормозит. СУММПРОИЗВ по целым столбцам (A:A) пересчитывает миллион строк — ограничьте диапазон.
  • ИЛИ работает неправильно. Функции И/ИЛИ не работают с массивами построчно — используйте умножение и сложение.
  • Текст в диапазоне умножения через * даёт #ЗНАЧ!. Через «;» текст считается нулём, через * — ошибкой.

Функция СУММПРОИЗВ — частые вопросы

Что делает СУММПРОИЗВ в Excel?

Перемножает элементы массивов попарно и суммирует результат: =СУММПРОИЗВ(B2:B10;C2:C10).

Как СУММПРОИЗВ называется на английском?

SUMPRODUCT.

Как сделать СУММПРОИЗВ с условием?

Перемножьте условия и диапазон суммирования: =СУММПРОИЗВ((A2:A10="Москва")*C2:C10).

Чем СУММПРОИЗВ лучше СУММЕСЛИМН?

СУММПРОИЗВ принимает любые выражения в условиях — части текста, ИЛИ, вычисления над датами, учёт регистра. СУММЕСЛИМН быстрее, но работает только с готовыми значениями ячеек.

Нужно ли нажимать Ctrl+Shift+Enter?

Нет, СУММПРОИЗВ обрабатывает массивы сама в любой версии Excel.

Суммировать и считать по сложным условиям, включая «содержит» и «заканчивается на», можно без длинных формул с !SEMTools — в пару кликов.
!SEMTools решает эту и сотни других задач в пару кликов!

Итоги: функция СУММПРОИЗВ в Excel

ЗадачаФормула
Сумма произведений=СУММПРОИЗВ(B2:B10;C2:C10)
Сумма с условием=СУММПРОИЗВ((A2:A10="Москва")*C2:C10)
Условие ИЛИ=СУММПРОИЗВ(((A2:A10="А")+(A2:A10="Б"))*C2:C10)
Количество=СУММПРОИЗВ(--(A2:A10="Москва"))
Средневзвешенное=СУММПРОИЗВ(B2:B10;C2:C10)/СУММ(C2:C10)

Надеюсь, на этой странице вы нашли то, что искали. СУММПРОИЗВ — универсальный инструмент для расчётов с условиями: умножение — это И, сложение — ИЛИ.

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*