← Все курсы · Курс Excel · Все руководства
Объяснение СУММПРОИЗВАТА: умножьте вниз, затем добавьте
К концу этой страницы вы сможете вычислить средневзвешенное значение, отражающее то, что произошло на самом деле, подсчитать и суммировать строки для нескольких условий одновременно без вспомогательного столбца, сравнить два столбца построчно и определить два способа нарушения этой функции. Это около двадцати пяти минут, и все приведенные ниже числа были просчитаны в Эксель.
Вот чем заняться сегодня. Найдите отчет, в котором кто-то усреднил цену, ставку или процентный столбец. Замените его на =SUMPRODUCT(quantity, price) / SUM(quantity) и сравните два числа. В таблице из шестнадцати строк, используемой в этом наборе руководств, среднее значение столбца цен составляет 132,81, а цена, которую бизнес фактически достиг за единицу, составляет 97,92, и только одна из них является фактом о бизнесе.
Краткая версия: СУММПРОИЗВ объединяет ячейки двух диапазонов в пары, умножает каждую пару и складывает результаты. Все остальное, что он делает, — это применение одного поведения к чему-то умному.
Соединить, умножить, сложить — вот идея, чтобы получить картину.
- Что он делает, в одной строке
- Число, для которого оно существует: средневзвешенное значение
- Условия — единицы и нули.
- Счет с двойным минусом
- Сравнение двух столбцов построчно
- Где он все еще превосходит SUMIFS
- Два способа, которыми он ломается
- Когда не следует использовать его
- Полное до и после
- Крайние случаи, которые ловят людей
- Почему это работает
- Использование этого в вашем собственном проекте
- Все на одном экране
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).
Использование этого в вашем собственном проекте
Переписывать каждую сумму в унаследованной книге — это утомительно и ненужно. Вместо этого сделайте это по порядку.
- Найдите каждое СРЕДНЕЕ значение в столбце цены, ставки или процента. Это те, кто, скорее всего, ответит на неправильный вопрос.
- Для каждого назовите вес. Единицы, численность, стоимость заказа, численность населения. Если вы не можете дать этому название, то простое среднее действительно может быть верным, и теперь вы знаете, почему.
- Заменить на
SUMPRODUCT(weights, values)/SUM(weights)и поместите оба числа один раз рядом, чтобы разница была видна тому, кто читал старое. - Удалите вспомогательные столбцы, которые существуют только для подачи SUMIFS., где вместо этого условие можно вычислить на месте.
- Направьте каждый аргумент на именованный столбец таблицы., поэтому два диапазона никогда не могут выйти за пределы выравнивания.
- Оставьте SUMIFS там, где он уже работает. Это дополнение к набору инструментов, а не замена.
Если у вас под рукой есть бумага, один дополнительный эскиз стоит пяти минут. Нарисуйте два узких столбца, запишите в один свои веса, а в другой свои значения и нарисуйте знак умножения между каждой парой. Затем нарисуйте одну стрелку от всего лота к одному числу. Рисунок — это формула, и как только вы его нарисуете, порядок аргументов перестает запоминать.
Все на одном экране
Это лист поиска. Закройте правую колонку, проработайте левую и произнесите каждый ответ вслух, прежде чем проверять его.
| вещь | Что он делает |
|---|---|
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 | Любая простая условная сумма. Читается легче и быстрее. |
Еще одна мысль, и мне бы искренне хотелось услышать ответы других людей. Меня запомнила средняя ставка скидки по двум тысячам заказов, невзвешенная, где несколько очень крупных сделок несли почти все деньги и почти не имели веса, поэтому заявленная скидка была на несколько пунктов в ту сторону, которая выглядела лучше. Что вам сказало невзвешенное среднее, что оказалось неправдой?
Ссылки
- Симпсон, Э. Х. (1951). Интерпретация взаимодействия в таблицах сопряженности. Журнал Королевского статистического общества, серия B, 13(2), 238–241.
- Тверски А. и Канеман Д. (1974). Суждение в условиях неопределенности: эвристика и предвзятость. Наука, 185(4157), 1124–1131.
- Роуленд, Калифорния (2014). Влияние тестирования и повторного исследования на удержание: метааналитический обзор эффекта тестирования. Психологический вестник, 140(6), 1432–1463.
Excel для аналитиков составляет 378 страниц, СУММПРОИЗВ разложен по частям, поэтому взвешенную сумму можно прочитать вслух.
Excel для аналитиков, 19 долларов США →тот Курс Excel дает вам повторения: средневзвешенные значения по сравнению с невзвешенными для тех же данных, условия, построенные на основе арифметики, и карточки с информацией о том, когда форма запятой и форма звездочки ведут себя по-разному. Теперь вы владеете методом; комплект - это практика. Ничего устанавливать, учетная запись не требуется.
Откройте набор Excel →