← Все курсы · Курс Excel · Все руководства

Объяснение СУММПРОИЗВАТА: умножьте вниз, затем добавьте

Одна функция и среднее значение, которое на самом деле верно · Часть Analyst Prep Kit

К , аналитик данных · Опубликовано

К концу этой страницы вы сможете вычислить средневзвешенное значение, отражающее то, что произошло на самом деле, подсчитать и суммировать строки для нескольких условий одновременно без вспомогательного столбца, сравнить два столбца построчно и определить два способа нарушения этой функции. Это около двадцати пяти минут, и все приведенные ниже числа были просчитаны в Эксель.

Вот чем заняться сегодня. Найдите отчет, в котором кто-то усреднил цену, ставку или процентный столбец. Замените его на =SUMPRODUCT(quantity, price) / SUM(quantity) и сравните два числа. В таблице из шестнадцати строк, используемой в этом наборе руководств, среднее значение столбца цен составляет 132,81, а цена, которую бизнес фактически достиг за единицу, составляет 97,92, и только одна из них является фактом о бизнесе.

Краткая версия: СУММПРОИЗВ объединяет ячейки двух диапазонов в пары, умножает каждую пару и складывает результаты. Все остальное, что он делает, — это применение одного поведения к чему-то умному.

Соединить, умножить, сложить — вот идея, чтобы получить картину.

Pair, multiply, add Two narrow columns of numbers stand side by side on the left, four rows deep. The first column holds 4, 10, 3 and then a row of three dots standing for the rest of the data. The second column holds 220, 85, 220 and a matching row of dots. A multiplication sign sits between the two columns on every row, pairing them up. To the right of each pair an arrow leads to a third column holding the result of that row's multiplication: 880, 850, 660, and dots. A tall curly brace gathers the whole third column together and leads to a single large number on the far right, 9,890, with a summation sign beside it. Nothing in the picture is a total of either original column on its own; the single number at the end is reached only by multiplying across each row first and adding afterwards. 410 3• • • ×× ×× 22085 220• • • 880850 660• • • Σ 9,890
Каждая строка умножается сама по себе, и только потом результаты суммируются. Вспомогательного столбца нигде не существует; третий столбец — это то, что функция делает внутри себя, по одной строке за раз.
Что вы узнаете
  1. Что он делает, в одной строке
  2. Число, для которого оно существует: средневзвешенное значение
  3. Условия — единицы и нули.
  4. Счет с двойным минусом
  5. Сравнение двух столбцов построчно
  6. Где он все еще превосходит SUMIFS
  7. Два способа, которыми он ломается
  8. Когда не следует использовать его
  9. Полное до и после
  10. Крайние случаи, которые ловят людей
  11. Почему это работает
  12. Использование этого в вашем собственном проекте
  13. Все на одном экране
Каждый результат на этой странице реален. Выполните в Excel таблицу заказов из шестнадцати строк, используемую в этом наборе руководств: шестнадцать заказов, 101 единица, доход 9890.

1. Что он делает, в одной строке

Перед объяснением: у вас есть столбец «Единицы» и столбец «Цена единицы», а столбец «Доход» отсутствует. Скажите, как бы вы получили общий доход, не добавляя его.

=SUMPRODUCT(Orders[Units], Orders[UnitPrice])      9890
=SUM(Orders[Revenue])                              9890

Идентичный. СУММПРОИЗВ сделал то же, что и столбец «Доход», в одной ячейке, без существования столбца. Первая строка — 4 × 220 = 880, вторая строка — 10 × 85 = 850 и так далее по всем шестнадцати строкам, а затем шестнадцать продуктов складываются вместе.

Часть, которую стоит усвоить, - это умножь первое, прибавь второе. Умножение сумм двух столбцов даст 101 × 2125, что является числом, не имеющим никакого смысла. Спаривание выполняется для каждой строки, и это вся функция.

Также требуется более двух диапазонов. SUMPRODUCT(a, b, c) умножает три значения в строке. Это имеет значение в данный момент, потому что условие — это всего лишь еще один диапазон чисел.

2. Число, для которого оно существует: средневзвешенное значение.

Перед пояснением: столбец Цена за единицу товара содержит шестнадцать цен. Кто-то усредняет это и сообщает среднюю цену. Скажите, описывает ли это число бизнес.

=AVERAGE(Orders[UnitPrice])                                       132.81
=SUMPRODUCT(Orders[Units], Orders[UnitPrice]) / SUM(Orders[Units])  97.92

Разрыв почти в 35. Оба арифметически верны и отвечают на разные вопросы.

AVERAGE относится к каждому из шестнадцати Заказы как одно: семь заказов на стол по 220, пять заказов на стулья по 85, четыре заказа на лампу по 40, что в среднем составляет шестнадцать одинаковых предметов. Взвешенная версия учитывает каждый из 101 Единицы Во-первых, это то, что означает «средняя цена» для любого, кто читает отчет о продажах. 9890 выручки свыше 101 единицы — это 97,92 за единицу, и вы можете это проверить: 9890 ÷ 101 = 97,92.

Причина, по которой простой средний показатель здесь высок, заключается в том, что дорогой продукт продается небольшими партиями, а дешевый — большими. Два заказа ламп по 12 и 15 единиц в невзвешенном среднем считаются двумя товарами, точно так же, как один заказ на стол из 2 единиц считается за один. Взвешенные заказы на лампы содержат 27 единиц, а настольные — 2.

Это самая ценная вещь, которую делает эта функция, и шаблон всегда имеет одну и ту же форму:

=SUMPRODUCT(weights, values) / SUM(weights)

Единицы измерения и цена. Численность и зарплата. Стоимость заказа и ставка скидки. Численность населения и на душу населения ничего. Всякий раз, когда вы усредняете ставку, цену или процент, где-то есть столбец веса, и его отсутствие — самая распространенная тихая ошибка в бизнес-отчетности.

Представьте себе последнее среднее значение, которое вы поставили перед кем-то. Что такое столбец веса и был ли он в формуле?

3. Условия – единицы и нули

Сравнение типа Region="North" не создает фильтр, он создает столбец со значениями ИСТИНА и ЛОЖЬ, по одному на строку. Умножьте этот столбец на другой, и TRUE будет иметь значение 1, а FALSE — как 0, поэтому каждая строка, не прошедшая проверку, вносит ноль.

=SUMPRODUCT((Orders[Region]="North") * Orders[Revenue])       2495

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

Сложите условия таким же образом. Умножение — это И, сложение — это ИЛИ, точно так же, как в формула ФИЛЬТР, потому что это та же арифметика.

=SUMPRODUCT((Orders[Region]="East") * (Orders[Revenue]>600) * Orders[Revenue])
2440

=SUMPRODUCT(((Orders[Region]="East") + (Orders[Region]="West")) * Orders[Revenue])
4725

Проверьте второе: Восток — 3040, Запад — 1685, и 3040 + 1685 = 4725. Скобки вокруг добавленной пары не являются обязательными, и их забвение является наиболее распространенной ошибкой в ​​условии ИЛИ.

Одно предупреждение о построении OR со сложением: если строка может удовлетворять обоим условиям, ее флаг становится равным 2 и она учитывается дважды. Регион не может быть одновременно Востоком и Западом, поэтому здесь безопасно. «Доход более 500 или количество единиц более 5» небезопасно, и исправление состоит в сравнении с нулем: --(((a)+(b))>0).

4. Счет с двойным минусом

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

=SUMPRODUCT(--(Orders[Revenue]>600))                    8
=SUMPRODUCT(--(Orders[Units]>5), --(Orders[UnitPrice]<100))   8

Двойной минус, обычно называемый двойным унарным, — это не такой трюк, как арифметическое выполнение дважды. Первый минус превращает ИСТИНА в -1, второй превращает -1 в 1, и то же самое происходит с ЛОЖЬ и 0. Умножение на 1 будет работать одинаково, как и добавление 0; знаки минуса — это самый короткий способ записать это.

Восемь заказов превышают 600. Восемь заказов также имеют более пяти единиц и цену ниже 100, что представляет собой подсчет с двумя условиями без вспомогательного столбца и без COUNTIFS.

Смешивать две формы — это нормально, и это стоит знать: аргумент флага производит подсчет, а размещение рядом с ним диапазона значений дает условную сумму.

=SUMPRODUCT(--(Orders[Revenue]>600), Orders[Revenue])     6475

5. Сравнение двух столбцов построчно

Это задача, которую SUMIFS на самом деле не может выполнить, поскольку ее критерии сравнивают столбец с фиксированным значением, а не с другим столбцом.

=SUMPRODUCT(--(Orders[Revenue] > Orders[UnitPrice] * 3))     12

Двенадцать заказов стоят более чем в три раза больше их цены за единицу товара, и это еще один способ сказать, что двенадцать заказов были рассчитаны на сумму более трех единиц. Сравнение происходит один раз для каждой строки с собственными значениями этой строки.

Та же форма отвечает на вопросы, которые на самом деле возникают: сколько счетов было оплачено после установленного срока, --(PaidDate > DueDate); сколько позиций было ниже себестоимости, --(Price < Cost); сколько месяцев не удалось достичь цели, --(Actual < Target). Каждый из них представляет собой сравнение двух столбцов, и ни один из них не является SUMIFS.

6. Где он по-прежнему превосходит SUMIFS

SUMIFS появился намного позже SUMPRODUCT и взял на себя большую часть повседневной работы. Его легче читать, он быстрее на больших диапазонах и для простой условной суммы это правильный ответ. Свой собственный гид освещает этот случай должным образом.

Сюда по-прежнему относятся четыре ситуации.

Построчное сравнение, как в пятом разделе.

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

=SUMPRODUCT(--(MONTH(Orders[OrderDate])=3), Orders[Revenue])     2585

Условие, возникающее в результате поиска. В таблице заказов нет столбца категории; Категория находится в таблице продуктов. СУММПРОИЗВ может выполнять поиск каждой строки внутри условия:

=SUMPRODUCT((INDEX(Products[Category],
             MATCH(Orders[Product], Products[Product], 0)) = "Lighting")
            * Orders[Revenue])
1600

same shape, "Furniture"                                          8290

1600 и 8290 в сумме дают 9890, поэтому каждый заказ был классифицирован. Это условный итог перекрестной таблицы в одной ячейке, без добавления столбца ни в одну из таблиц, и он состоит из шаблон поиска ты уже знаешь.

Взвешенная арифметика любого рода, это второй раздел и причина, по которой эту функцию вообще стоит изучать. Эта же форма формирует стоимость товаров из прайс-листа:

=SUMPRODUCT(Orders[Units],
            INDEX(Products[Cost], MATCH(Orders[Product], Products[Product], 0)))
6076

Это также двигатель любой модели оценки, в которой набор весов соответствует набору мер. Индекс риска, который окрашивает сам себя этот шаблон построен полностью.

7. Два способа поломки

Перед пояснением: один из ваших диапазонов имеет шестнадцать строк, а другой — пятнадцать. Предскажите, что произойдет.

=SUMPRODUCT(Orders[Units], G2:G16)      #VALUE!

Ошибка разных размеров. Здесь нет частичного спаривания и молчаливого усечения, что является наилучшим возможным поведением: несовпадение — это именно та вещь, которая привела бы к правдоподобному неправильному итогу в менее строгой функции. Когда вы увидите это, посчитайте строки в каждом аргументе.

Текст ведет себя по-разному в двух формах., и это действительно удивляет людей. Если между диапазонами стоят запятые, текст рассматривается как ноль, и формула возвращает ответ. Со звездочками текст не может быть умножен и в формуле возникают ошибки.

=SUMPRODUCT(Orders[Units], Orders[Rep])        0
=SUMPRODUCT(Orders[Units] * Orders[Rep])       #VALUE!

Толерантность в форме запятой звучит дружелюбнее и более опасна. Столбец, состоящий в основном из чисел с несколькими текстовыми записями, возвращает сумму, меньшую ровно на эти строки, без ошибок, что является той же ошибкой, что и Числа, хранящиеся в виде текста носить другую шляпу. Если общая сумма выглядит немного заниженной, проверьте типы, прежде чем проверять формулу.

Практическое правило: используйте запятые, когда каждый аргумент действительно числовой, и используйте звездочки, когда задействованы условия, то есть тогда, когда вам все равно нужна строгость.

8. Когда его не следует использовать

Три случая, если говорить прямо, потому что на странице о функции также должно быть указано, где она останавливается.

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

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

Когда вам нужно увидеть строки. СУММПРОИЗВ возвращает одно число и ничего не показывает о том, какие строки внесли вклад. Если вопрос в том, «что заказывает», то это фильтр или FILTER формула, а не это.

Полное до и после

Та же таблица, тот же вопрос: какова наша средняя цена продажи и как обстоят дела с крупными заказами?

До

=AVERAGE(UnitPrice)                     132.81
=COUNTIF(Revenue,">600")                     8
plus a Month helper column, a Category helper column,
and a Line cost helper column, to make three other numbers possible

Среднее значение составляет 132,81, что представляет собой среднее значение цен, которые мы взимаем, а не цены, которую мы получаем, и оно примерно на 36% выше этого значения. Три вспомогательных столбца существуют только для того, чтобы можно было использовать SUMIFS, и каждый из них представляет собой столбец, который можно перетащить неправильно, отсортировать по выравниванию или оставить незаполненным в новой строке.

после

average selling price
=SUMPRODUCT(Units, UnitPrice) / SUM(Units)                       97.92

March revenue, no month column
=SUMPRODUCT(--(MONTH(OrderDate)=3), Revenue)                     2585

lighting revenue, no category column
=SUMPRODUCT((INDEX(Cat, MATCH(Product, Prod, 0))="Lighting") * Revenue)   1600

cost of goods, no line-cost column
=SUMPRODUCT(Units, INDEX(Cost, MATCH(Product, Prod, 0)))         6076

Четыре числа, никаких вспомогательных столбцов, и каждая формула устанавливает свою собственную логику там, где она читается. И сверка сохраняется до сих пор: освещение 1600 плюс мебель 8290 — это 9890, а 9890 минус 6076 себестоимости — это 3814 валовой прибыли.

Претензия, и именно поэтому эта функция стоит дня: средняя цена в столбце равна 132,81, а средняя цена, фактически достигнутая бизнесом, равна 97,92, и единственная разница между этими двумя числами заключается в том, было ли что-либо взвешено.

Крайние случаи, которые ловят людей

Шесть, которые стоит знать.

Пустые ячейки. Рассматривается как ноль, поэтому пробел в столбце весов автоматически удаляет эту строку из средневзвешенного значения. Перед делением посчитайте пробелы.

ИЛИ условия, которые перекрываются. Добавление двух флагов дает 2 для строки, совпадающей с обоими, что приводит к двойному счету. Завернуть в --(( ... )>0) всякий раз, когда оба могут быть правдой.

Отсутствуют скобки вокруг условия. --Orders[Revenue]>600 это не то же самое, что --(Orders[Revenue]>600), и первый выдаёт скорее что-то уверенно неправильное, чем ошибку.

Ошибки в любом месте диапазона. Один #N/A в столбце приводит к ошибке всего СУММПРОИЗВ. Это правильное поведение, и его сокрытие превращает видимую проблему в тихое занижение.

Диапазоны, начинающиеся в разных строках. SUMPRODUCT(A2:A17, B3:B18) имеет одинаковый размер и объединяет каждую строку с неправильным партнером. Это дает чистую, правдоподобную и совершенно неверную цифру. Укажите оба столбца таблицы, и смещение станет невозможным.

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

Почему это работает

Средневзвешенное значение не является усовершенствованием простого, это другой вопрос, и рассматривать их как взаимозаменяемые — известный способ прийти к неправильному выводу из правильной арифметики. Общее явление, когда объединение групп меняет или переворачивает то, что цифры говорят в зависимости от того, как взвешены группы, было формально установлено Симпсоном и с тех пор носит его имя (Симпсоны, 1951, Журнал Королевского статистического общества, серия B, 13(2), 238–241). 132,81 на этой странице является мягкой версией: шестнадцать заказов, каждый из которых равен, скажем, когда оцениваемая вещь представляет собой единицу и их 101.

Почему невзвешенная версия все равно публикуется, стоит назвать, потому что это не невежество. Это то, что AVERAGE — это ответ, который приходит на ум, и возвращаемое число правдоподобно, и ничто в нем не похоже на суждение. Люди заменяют более простой вопрос более сложным и отвечают на него, не замечая замены, и замененный ответ приходит с нормальной уверенностью (Тверской & Канеман, 1974, Наука, 185(4157), 1124–1131). «Каково среднее значение этого столбца» легко; «Что мы на самом деле получили за единицу» требует знания столбца веса, а также формулы, которая задает второй вопрос, на этой странице.

Одно замечание в шпаргалке ниже. Он создан для того, чтобы его просматривали и вспоминали, а не перечитывали, потому что проверка материала на материале важнее его повторного изучения в очень большом количестве экспериментов, в том числе с более длительными задержками, где это наиболее важно (Роуленд, 2014, Психологический вестник, 140(6), 1432–1463).

Использование этого в вашем собственном проекте

Переписывать каждую сумму в унаследованной книге — это утомительно и ненужно. Вместо этого сделайте это по порядку.

  1. Найдите каждое СРЕДНЕЕ значение в столбце цены, ставки или процента. Это те, кто, скорее всего, ответит на неправильный вопрос.
  2. Для каждого назовите вес. Единицы, численность, стоимость заказа, численность населения. Если вы не можете дать этому название, то простое среднее действительно может быть верным, и теперь вы знаете, почему.
  3. Заменить на SUMPRODUCT(weights, values)/SUM(weights) и поместите оба числа один раз рядом, чтобы разница была видна тому, кто читал старое.
  4. Удалите вспомогательные столбцы, которые существуют только для подачи SUMIFS., где вместо этого условие можно вычислить на месте.
  5. Направьте каждый аргумент на именованный столбец таблицы., поэтому два диапазона никогда не могут выйти за пределы выравнивания.
  6. Оставьте SUMIFS там, где он уже работает. Это дополнение к набору инструментов, а не замена.

Если у вас под рукой есть бумага, один дополнительный эскиз стоит пяти минут. Нарисуйте два узких столбца, запишите в один свои веса, а в другой свои значения и нарисуйте знак умножения между каждой парой. Затем нарисуйте одну стрелку от всего лота к одному числу. Рисунок — это формула, и как только вы его нарисуете, порядок аргументов перестает запоминать.

Подробнее об этом и еще что-нибудь подобное. Все инструкции находятся в одном месте на индекс направляющих: Excel, SQL, Python и связанные с ними методы работы.

Все на одном экране

Это лист поиска. Закройте правую колонку, проработайте левую и произнесите каждый ответ вслух, прежде чем проверять его.

вещьЧто он делает
SUMPRODUCT(a, b)Умножает каждую пару ячеек, затем складывает результаты.
Порядок действийСначала умножьте в каждой строке. Никогда не умножайте две суммы.
Средневзвешенное значение=SUMPRODUCT(weights, values)/SUM(weights)
Чем он отличается от СРЕДНЕГОСРЗНАЧ дает каждой строке равное значение, независимо от ее размера.
УсловиеСтолбец значений ИСТИНА и ЛОЖЬ, которые ведут себя как 1 и 0.
ANDУмножьте условия: (a)*(b).
ORДобавьте их в скобках. Завернуть в --(( )>0) если оба могут быть правдой.
Подсчет=SUMPRODUCT(--(condition)). Двойной минус составляет номера флагов.
Условный итог=SUMPRODUCT(--(condition), values)
Сравнение двух столбцов=SUMPRODUCT(--(A > B)). SUMIFS не может этого сделать.
Вычисленное условие--(MONTH(dates)=3). Вспомогательный столбец не требуется.
Состояние из поискаINDEX MATCH внутри условия, оценивается для каждой строки.
Диапазоны разных размеров#VALUE!. Хорошее поведение; посчитайте ряды.
Текст, форма запятойРассматривается как ноль. Возвращает короткую сумму.
Текст, форма звездочки#VALUE!. Строже, и обычно то, что вы хотите.
Невыровненные диапазоныТот же размер, не те партнеры, правдоподобный неправильный ответ. Используйте столбцы таблицы.
Целые столбцыОценивает миллион строк для каждого условия. Не.
Когда отдавать предпочтение SUMIFSЛюбая простая условная сумма. Читается легче и быстрее.
Единственная привычка, которую следует сохранить. Всякий раз, когда вы собираетесь усреднить цену, ставку или процент, сначала произнесите вес вслух. Если таковое имеется, то простое среднее — это ответ на вопрос, который никто не задавал, и разница часто достаточно велика, чтобы изменить то, что кто-то сделает дальше. Если СУММПРОИЗВ ведет себя не так, как описано на этой странице, существует общая ошибка. шлейф диагностики на предмет застревания.

Еще одна мысль, и мне бы искренне хотелось услышать ответы других людей. Меня запомнила средняя ставка скидки по двум тысячам заказов, невзвешенная, где несколько очень крупных сделок несли почти все деньги и почти не имели веса, поэтому заявленная скидка была на несколько пунктов в ту сторону, которая выглядела лучше. Что вам сказало невзвешенное среднее, что оказалось неправдой?

Ссылки

Вам нужно взвешенное число, а формула представляет собой одну длинную строку, которую никто не может проверить.

Excel для аналитиков составляет 378 страниц, СУММПРОИЗВ разложен по частям, поэтому взвешенную сумму можно прочитать вслух.

Excel для аналитиков, 19 долларов США →
Попрактикуйтесь в взвешенной арифметике на реальной таблице.

тот Курс Excel дает вам повторения: средневзвешенные значения по сравнению с невзвешенными для тех же данных, условия, построенные на основе арифметики, и карточки с информацией о том, когда форма запятой и форма звездочки ведут себя по-разному. Теперь вы владеете методом; комплект - это практика. Ничего устанавливать, учетная запись не требуется.

Откройте набор Excel →