Функция SUMPRODUCT в Excel

Функция SUMPRODUCT в Excel умножает диапазоны или массивы и возвращает сумму произведений. Это звучит скучно, но СУММПРОИЗВ — невероятно универсальная функция, которую можно использовать для подсчета и суммирования, как COUNTIFS или SUMIFS, но с большей гибкостью. Внутри SUMPRODUCT можно легко использовать другие функции для дальнейшего расширения функциональности.

Цель

Умножить, затем суммировать массивы.

Возвращаемое значение

Результат перемножения и суммирования массивов

Аргументы

  • array1 — первый массив или диапазон, который необходимо умножить, а затем добавить.
  • array2 — [необязательный] Второй массив или диапазон для умножения, а затем добавления.

Синтаксис

=SUMPRODUCT(array1, [array2], …)

Примечания по использованию

Функция СУММПРОИЗВ умножает массивы и возвращает сумму произведений. Если указан только один массив, SUMPRODUCT просто суммирует элементы массива. Можно указать до 30 диапазонов или массивов.

При первом знакомстве с SUMPRODUCT он может показаться скучным, сложным и даже бессмысленным. Но СУММПРОИЗВ — это удивительно универсальная функция со множеством применений. Поскольку он изящно обрабатывает массивы, вы можете использовать его для обработки диапазонов ячеек умными и элегантными способами.

Рабочий лист

На листе, показанном выше, функция используется для вычисления условной суммы в трех отдельных формулах:

I5=SUMPRODUCT(--(C5:C14="red"),F5:F14) //
I6=SUMPRODUCT(--(B5:B14="tx"),--(C5:C14="red"),F5:F14)
I7=SUMPRODUCT(--(B5:B14="co"),--(C5:C14="blue"),F5:F14)

Результаты видны в ячейках I5, I6 и I7. В приведенной ниже статье объясняется, как можно использовать SUMPRODUCT для вычисления таких условных сумм, а также назначение двойного отрицания (—).

Классический пример

«Классический» пример SUMPRODUCT иллюстрирует, как можно вычислить сумму напрямую без вспомогательного столбца . Например, на листе ниже вы можете использовать функцию, чтобы получить сумму всех чисел в столбце F, вообще не используя столбец F:

Чтобы выполнить этот расчет, СУММПРОИЗВ использует значения в столбцах D и E непосредственно следующим образом:

=SUMPRODUCT(D5:D14,E5:E14) // returns 1612

Результат аналогичен суммированию всех значений в столбце F. Формула вычисляется следующим образом:

=SUMPRODUCT(D5:D14,E5:E14)
=SUMPRODUCT({10;6;14;9;11;10;8;9;11;10},{15;18;15;16;18;18;15;16;18;16})
=SUMPRODUCT({150;108;210;144;198;180;120;144;198;160})
=1612

Такое использование СУММПРОИЗВ может быть удобным, особенно когда нет места (или нет необходимости) для вспомогательного столбца с промежуточным вычислением. Однако наиболее распространенное использование SUMPRODUCT в реальном мире — это применение условной логики в ситуациях, требующих большей гибкости, чем могут предложить такие функции, как SUMIFS и COUNTIFS.

Для условных сумм и подсчетов

Предположим, у вас есть данные о заказе в A2:B6, где State находится в столбце A, а Sales — в столбце B:

А Б
1 Состояние Продажи
2 UT 75
3 СО 100
4 Техас 125
5 СО 125
6 Техас 150

Используя SUMPRODUCT, вы можете подсчитать общий объем продаж для Texas («TX») по следующей формуле:

=SUMPRODUCT(--(A2:A6="TX"))

И вы можете суммировать общие продажи для Texas («TX») по этой формуле:

=SUMPRODUCT(--(A2:A6="TX"),B2:B6)

Примечание. Двойное отрицание  — это распространенный прием, используемый в более сложных формулах Excel для приведения значений TRUE и FALSE к единицам и нулям.

Для приведенного выше примера с суммой вот виртуальное представление двух массивов, впервые обработанных SUMPRODUCT:

array1 array2
TRUE 75
TRUE 100
FALSE 125
TRUE 125
FALSE 150

В каждом массиве по 5 элементов. array1 содержит значения TRUE / FALSE, которые являются результатом выражения A2:A6=»TX», а массив2 содержит значения в B2:B6. Каждый элемент array1 будет умножен на соответствующий элемент массива .2 Однако в текущем состоянии результат будет равен нулю , поскольку значения ИСТИНА и ЛОЖЬ в array1 будут оцениваться как нулевые. Нам нужно, чтобы элементы array1 были числовыми, и именно здесь полезно использовать двойное отрицание.

Двойной отрицательный (—)

Двойное отрицание (—) — это один из нескольких способов привести значения TRUE и FALSE к их числовым эквивалентам, 1 и 0. Когда у нас есть 1 и 0, мы можем выполнять различные операции над массивами с помощью логической логики . В таблице ниже показан результат в array1 на основе приведенной выше формулы после того, как двойное отрицательное значение (—) изменило значения TRUE и FALSE на 1 и 0.

массив1 массив2 Продукт
0 * 75 «=» 0
0 * 100 «=» 0
1 * 125 «=» 125
0 * 125 «=» 0
1 * 150 «=» 150
Сумма 275

Переведя приведенную выше таблицу в массивы , вот как вычисляется формула:

=SUMPRODUCT({0,0,1,0,1},{75,100,125,125,150})

Затем СУММПРОИЗВ умножает массив1 и массив2  вместе, в результате чего получается один массив:

=SUMPRODUCT({0,0,125,0,150})

Наконец, SUMPRODUCT возвращает сумму всех значений в массиве, 275.  Этот пример расширяет приведенные выше идеи более подробно.

Сокращенный синтаксис в массиве1

Вы часто будете видеть формулу, описанную выше, написанную по-другому, например так:

=SUMPRODUCT((A2:A6="TX")*B2:B6) // returns 275

В Norice все вычисления перенесены в array1 . Результат тот же, но этот синтаксис дает несколько преимуществ. Во-первых, формула более компактна, тем более, что логика усложняется. Это связано с тем, что двойное отрицательное значение (—) больше не требуется для преобразования значений TRUE и FALSE — математическая операция умножения (*) автоматически преобразует значения ИСТИНА и ЛОЖЬ из (A2:A6=»TX») в 1 и 0 . Но самым главным преимуществом является гибкость . При использовании отдельных аргументов операция всегда является умножением, так как SUMPRODUCT возвращает сумму произведений . Это ограничивает формулу логикой И, поскольку умножение соответствует сложению в булевой алгебре.. Перемещение вычислений в один аргумент означает, что вы можете использовать сложение (+) для логики ИЛИ в любой комбинации. Другими словами, вы можете выбирать свои собственные математические операции, которые в конечном итоге определяют логику формулы.

Учитывая вышеперечисленные преимущества, у сокращенного синтаксиса есть один недостаток. СУММПРОИЗВ запрограммирован на игнорирование ошибок, возникающих в результате умножения текстовых значений в массивах, заданных как отдельные аргументы . Это может быть удобно в определенных ситуациях . При сокращенном синтаксисе это преимущество исчезает, так как умножение происходит внутри одного аргумента массива. В этом случае применяется обычное поведение: текстовые значения будут создавать #ЗНАЧ! ошибки.

Примечание. Технически перемещение вычислений в массив1 создает « операцию с массивом », а SUMPRODUCT — одна из немногих функций, которые могут обрабатывать операции с массивом изначально без Control + Shift + Enter в прежних версиях Excel .

Игнорирование пустых ячеек

Чтобы игнорировать пустые ячейки с помощью СУММПРОИЗВ, вы можете использовать такое выражение, как диапазон<>»» . В приведенном ниже примере формулы в F5 и F6 игнорируют ячейки в столбце C, которые не содержат значения:

=SUMPRODUCT(--(C5:C15<>"")) // count
=SUMPRODUCT(--(C5:C15<>"")*D5:D15) // sum

С другими функциями

SUMPRODUCT может напрямую использовать другие функции. Вы можете увидеть, что СУММПРОИЗВ используется с функцией LEN для подсчета общего количества символов в диапазоне или с такими функциями, как ISBLANK, ISTEXT и т. д. Обычно это не функции массива, но когда им задан диапазон, они создают «результирующий массив». Поскольку СУММПРОИЗВ создан для работы с массивами, он может выполнять вычисления непосредственно с массивами. Это может быть хорошим способом сэкономить место на листе, устраняя необходимость во «вспомогательном» столбце.

Например, предположим, что у вас есть 10 различных текстовых значений в формате A1:A10, и вы хотите подсчитать общее количество символов для всех 10 значений. Вы можете добавить вспомогательный столбец в столбец B, который использует эту формулу: LEN(A1) для вычисления символов в каждой ячейке. Затем вы можете использовать SUM, чтобы сложить все 10 чисел. Однако, используя SUMPRODUCT, вы можете написать такую ​​формулу:

=SUMPRODUCT(LEN(A1:A10))

При использовании с диапазоном, например A1:A10, LEN вернет массив из 10 значений. Затем SUMPRODUCT просто суммирует все значения и возвращает результат без необходимости использования вспомогательного столбца.

Ниже приведены примеры многих других способов использования SUMPRODUCT.

Массивы и Excel 365

Это запутанная тема, но она должна быть рассмотрена. Функцию СУММПРОИЗВ можно использовать для создания  формул массива  , не требующих Ctrl + Shift + Enter . Это ключевая причина, по которой SUMPRODUCT так широко используется для создания более сложных формул. Одна проблема с формулами массива заключается в том, что они обычно возвращают неверные результаты, если они не вводятся с помощью клавиш Ctrl + Shift + Enter.

Это означает, что если кто-то забудет использовать CSE при проверке или настройке формулы, результат может внезапно измениться, даже если фактическая формула не изменилась. Использование СУММПРОИЗВ означает, что формулы будут работать в любой версии Excel без специальной обработки .

В Excel 365 обработчик формул  изначально обрабатывает массивы . Это означает, что вы часто можете использовать функцию СУММ вместо СУММПРОИЗВ в формуле массива  с тем же результатом, и нет необходимости вводить формулу особым образом. Однако, если та же формула открыта в более ранней версии Excel, потребуется сочетание клавиш Ctrl + Shift + Enter.

Суть в том, что СУММПРОИЗВ является более безопасным вариантом, если рабочий лист будет использоваться в любой версии Excel до Excel 365, даже если рабочий лист был создан в Excel 365.

Примечания

  • SUMPRODUCT рассматривает нечисловые элементы в массивах как нули.
  • Аргументы массива должны быть одного размера. В противном случае функция сгенерирует ошибку #ЗНАЧ! значение ошибки.
  • Логические проверки внутри массивов будут создавать значения TRUE и FALSE. В большинстве случаев вы захотите принудить их к 1 и 0.
  • Часто может напрямую использовать результат других функций.
Автор А. Днепров

Обучаю основам работы с офисными программами.

Функция SUMPRODUCT в Excel
Функция SEQUENCE в Excel