В этом уроке Вы найдёте несколько интересных примеров, демонстрирующих как использовать функцию ВПР (VLOOKUP) вместе с СУММ (SUM) или СУММЕСЛИ (SUMIF) в Excel, чтобы выполнять поиск и суммирование значений по одному или нескольким критериям.
Вы пытаетесь создать файл-сводку в Excel, который определит все экземпляры одного конкретного значения и просуммирует другие значения, связанные с ним? Или Вам нужно найти все значения в массиве, удовлетворяющие заданному условию, а затем просуммировать связанные значения с другого листа? Или, может быть, перед Вами встала ещё более трудная задача, например, просмотреть таблицу всех счетов-фактур Вашей компании, найти среди них счета-фактуры определённого продавца и просуммировать их?
Задачи могут отличаться, но их смысл одинаков – необходимо найти и просуммировать значения по одному или нескольким критериям в Excel. Что это за значения? Любые числовые. Что это за критерии? Любые… Начиная с числа или ссылки на ячейку, содержащую нужное значение, и заканчивая логическими операторами и результатами формул Excel.
Итак, есть ли в Microsoft Excel функционал, способный справиться с описанными задачами? Конечно же, да! Решение кроется в комбинировании функций ВПР (VLOOKUP) или ПРОСМОТР (LOOKUP) с функциями СУММ (SUM) или СУММЕСЛИ (SUMIF). Примеры формул, приведённые далее, помогут Вам понять, как эти функции работают и как их использовать с реальными данными.
Обратите внимание, приведённые примеры рассчитаны на продвинутого пользователя, знакомого с основными принципами и синтаксисом функции ВПР. Если Вам еще далеко до этого уровня, рекомендуем уделить внимание первой части учебника – Функция ВПР в Excel: синтаксис и примеры.
- ВПР и СУММ в Excel – вычисляем сумму найденных совпадающих значений
- Выполняем другие вычисления, используя функцию ВПР в Excel
- Вычисляем среднее:
- Находим максимум:
- Находим минимум:
- Вычисляем % от суммы:
- ПРОСМОТР и СУММ – поиск в массиве и сумма связанных значений
- ВПР и СУММЕСЛИ – находим и суммируем значения, удовлетворяющие определённому критерию
ВПР и СУММ в Excel – вычисляем сумму найденных совпадающих значений
Если Вы работаете с числовыми данными в Excel, то достаточно часто Вам приходится не только извлекать связанные данные из другой таблицы, но и суммировать несколько столбцов или строк. Для этого Вы можете комбинировать функции СУММ и ВПР, как это показано ниже.
Предположим, что у нас есть список товаров с данными о продажах за несколько месяцев, с отдельным столбцом для каждого месяца. Источник данных – лист Monthly Sales:
Теперь нам необходимо сделать таблицу итогов с суммами продаж по каждому товару.
Решение этой задачи – использовать массив констант в аргументе col_index_num (номер_столбца) функции ВПР. Вот пример формулы:
=SUM(VLOOKUP(lookup value, lookup range, {2,3,4}, FALSE))
=СУМ(ВПР(искомое_значение;таблица;{2;3;4};ЛОЖЬ))
Как видите, мы использовали массив {2,3,4} для третьего аргумента, чтобы выполнить поиск несколько раз в одной функции ВПР, и получить сумму значений в столбцах 2, 3 и 4.
Теперь давайте применим эту комбинацию ВПР и СУММ к данным в нашей таблице, чтобы найти общую сумму продаж в столбцах с B по M:
=SUM(VLOOKUP(B2,'Monthly sales'!$A$2:$M$9,{2,3,4,5,6,7,8,9,10,11,12,13},FALSE))
=СУМ(ВПР(B2;'Monthly sales'! $A$2:$M$9;{2;3;4;5;6;7;8;9;10;11;12;13};ЛОЖЬ))
Важно! Если Вы вводите формулу массива, то обязательно нажмите комбинацию Ctrl+Shift+Enter вместо обычного нажатия Enter. Microsoft Excel заключит Вашу формулу в фигурные скобки:
{=SUM(VLOOKUP(B2,'Monthly sales'!$A$2:$M$9,{2,3,4,5,6,7,8,9,10,11,12,13},FALSE))}
{=СУМ(ВПР(B2;'Monthly sales'!$A$2:$M$9;{2;3;4;5;6;7;8;9;10;11;12;13};ЛОЖЬ))}
Если же ограничиться простым нажатием Enter, вычисление будет произведено только по первому значению массива, что приведёт к неверному результату.
Возможно, Вам стало любопытно, почему формула на рисунке выше отображает [@Product], как искомое значение. Это происходит потому, что мои данные были преобразованы в таблицу при помощи команды Table (Таблица) на вкладке Insert (Вставка). Мне удобнее работать с полнофункциональными таблицами Excel, чем с простыми диапазонами. Например, когда Вы вводите формулу в одну из ячеек, Excel автоматически копирует её на весь столбец, что экономит несколько драгоценных секунд.
Как видите, использовать функции ВПР и СУММ в Excel достаточно просто. Однако, это далеко не идеальное решение, особенно, если приходится работать с большими таблицами. Дело в том, что использование формул массива может замедлить работу приложения, так как каждое значение в массиве делает отдельный вызов функции ВПР. Получается, что чем больше значений в массиве, тем больше формул массива в рабочей книге и тем медленнее работает Excel.
Эту проблему можно преодолеть, используя комбинацию функций INDEX (ИНДЕКС) и MATCH (ПОИСКПОЗ) вместо VLOOKUP (ВПР) и SUM (СУММ). Далее в этой статье Вы увидите несколько примеров таких формул.
Выполняем другие вычисления, используя функцию ВПР в Excel
Только что мы разобрали пример, как можно извлечь значения из нескольких столбцов таблицы и вычислить их сумму. Таким же образом Вы можете выполнить другие математические операции с результатами, которые возвращает функция ВПР. Вот несколько примеров формул:
Вычисляем среднее:
{=AVERAGE(VLOOKUP(A2,'Lookup Table'!$A$2:$D$10,{2,3,4},FALSE))}
{=СРЗНАЧ(ВПР(A2;'Lookup Table'!$A$2:$D$10;{2;3;4};ЛОЖЬ))}
Формула ищет значение из ячейки A2 на листе Lookup table и вычисляет среднее арифметическое значений, которые находятся на пересечении найденной строки и столбцов B, C и D.
Находим максимум:
{=MAX(VLOOKUP(A2,'Lookup Table'!$A$2:$D$10,{2,3,4},FALSE))}
{=МАКС(ВПР(A2;'Lookup Table'!$A$2:$D$10;{2;3;4};ЛОЖЬ))}
Формула ищет значение из ячейки A2 на листе Lookup table и возвращает максимальное из значений, которые находятся на пересечении найденной строки и столбцов B, C и D.
Находим минимум:
{=MIN(VLOOKUP(A2,'Lookup Table'!$A$2:$D$10,{2,3,4},FALSE))}
{=МИН(ВПР(A2;'Lookup Table'!$A$2:$D$10;{2;3;4};ЛОЖЬ))}
Формула ищет значение из ячейки A2 на листе Lookup table и возвращает минимальное из значений, которые находятся на пересечении найденной строки и столбцов B, C и D.
Вычисляем % от суммы:
{=0.3*SUM(VLOOKUP(A2,'Lookup Table'!$A$2:$D$10,{2,3,4},FALSE))}
{=0.3*СУММ(ВПР(A2;'Lookup Table'!$A$2:$D$10;{2;3;4};ЛОЖЬ))}
Формула ищет значение из ячейки A2 на листе Lookup table, затем суммирует значения, которые находятся на пересечении найденной строки и столбцов B, C и D, и лишь затем вычисляет 30% от суммы.
Если мы добавим перечисленные выше формулы в таблицу из предыдущего примера, результат будет выглядеть так:
ПРОСМОТР и СУММ – поиск в массиве и сумма связанных значений
В случае, когда Ваше искомое значение — это массив, функция ВПР становится бесполезной, поскольку она не умеет работать с массивами данных. В такой ситуации Вы можете использовать функцию ПРОСМОТР (LOOKUP) в Excel, которая похожа на ВПР, к тому же работает с массивами так же, как и с одиночными значениями.
Давайте разберем пример, чтобы Вам стало понятнее, о чём идет разговор. Предположим, у нас есть таблица, в которой перечислены имена клиентов, купленные товары и их количество (таблица Main table). Кроме этого, есть вторая таблица, содержащая цены товаров (таблица Lookup table). Наша задача – написать формулу, которая найдёт сумму всех заказов заданного клиента.
Как Вы помните, нельзя использовать функцию ВПР, если искомое значение встречается несколько раз (это массив данных). Используйте вместо этого комбинацию функций СУММ и ПРОСМОТР:
=SUM(LOOKUP($C$2:$C$10,'Lookup table'!$A$2:$A$16,'Lookup table'!$B$2:$B$16)*$D$2:$D$10*($B$2:$B$10=$G$1))
=СУММ(ПРОСМОТР($C$2:$C$10;'Lookup table'!$A$2:$A$16;'Lookup table'!$B$2:$B$16)*$D$2:$D$10*($B$2:$B$10=$G$1))
Так как это формула массива, не забудьте нажать комбинацию Ctrl+Shift+Enter при завершении ввода.
Lookup table – это название листа, где находится просматриваемый диапазон.
Давайте проанализируем составные части формулы, чтобы Вы понимали, как она работает, и могли настроить её под свои нужды. Функцию СУММ пока оставим в стороне, так как её цель очевидна.
-
LOOKUP($C$2:$C$10,'Lookup table'!$A$2:$A$16,'Lookup table'!$B$2:$B$16)
ПРОСМОТР($C$2:$C$10;'Lookup table'!$A$2:$A$16;'Lookup table'!$B$2:$B$16)
Функция ПРОСМОТР просматривает товары, перечисленные в столбце C основной таблицы (Main table), и возвращает соответствующую цену из столбца B просматриваемой таблицы (Lookup table).
- $D$2:$D$10 – количество товаров, приобретенных каждым покупателем, чьё имя есть в столбце D основной таблицы. Умножая количество товара на цену, которую возвратила функция ПРОСМОТР, получаем стоимость каждого приобретенного продукта.
- $B$2:$B$10=$G$1 – формула сравнивает имена клиентов в столбце B основной таблицы с именем в ячейке G1. Если есть совпадение, возвращается 1, в противном случае 0. Таким образом, отбрасываются имена покупателей, отличающиеся от указанного в ячейке G1, ведь все мы знаем – умножение на ноль дает ноль.
Так как наша формула – это формула массива, она повторяет описанные выше действия для каждого значения в массиве поиска. В завершение, функция СУММ вычисляет сумму значений, получившихся в результате умножения. Совсем не сложно, Вы согласны?
Замечание. Чтобы функция ПРОСМОТР работала правильно, просматриваемый столбец должен быть отсортирован в порядке возрастания.
ВПР и СУММЕСЛИ – находим и суммируем значения, удовлетворяющие определённому критерию
Функция СУММЕСЛИ (SUMIF) в Excel похожа на СУММ (SUM), которую мы только что разбирали, поскольку она тоже суммирует значения. Разница лишь в том, что СУММЕСЛИ суммирует только те значения, которые удовлетворяют заданному Вами критерию. Например, простейшая формула с СУММЕСЛИ:
=SUMIF(A2:A10,">10")
=СУММЕСЛИ(A2:A10;">10")
– суммирует все значения ячеек в диапазоне A2:A10, которые больше 10.
Очень просто, правда? А теперь давайте рассмотрим немного более сложный пример. Предположим, что у нас есть таблица, в которой перечислены имена продавцов и их номера ID (Lookup table). Кроме этого, есть ещё одна таблица, в которой те же ID связаны с данными о продажах (Main table). Наша задача – найти сумму продаж для заданного продавца. Здесь есть 2 отягчающих обстоятельства:
- Основная таблица (Main table) содержит множество записей для одного ID в случайном порядке.
- Вы не можете добавить столбец с именами продавцов к основной таблице.
Давайте запишем формулу, которая найдет все продажи, сделанные заданным продавцом, а также просуммирует найденные значения.
Перед тем, как мы начнём, позвольте напомнить Вам синтаксис функции СУММЕСЛИ (SUMIF):
SUMIF(range,criteria,[sum_range])
СУММЕСЛИ(диапазон;критерий;[диапазон_суммирования])
- range (диапазон) – аргумент говорит сам за себя. Это просто диапазон ячеек, которые Вы хотите оценить заданным критерием.
- criteria (критерий) – условие, которое говорит формуле, какие значения суммировать. Может быть числом, ссылкой на ячейку, выражением или другой функцией Excel.
- sum_range (диапазон_суммирования) – необязательный, но очень важный для нас аргумент. Он определяет диапазон связанных ячеек, которые будут суммироваться. Если он не указан, Excel суммирует значения ячеек, в первом аргументе функции.
Собрав все воедино, давайте определим третий аргумент для нашей функции СУММЕСЛИ. Как Вы помните, мы хотим суммировать все продажи, совершённые определённым продавцом, чьё имя задано в ячейке F2 (смотрите рисунок, приведённый выше).
- range (диапазон) – так как мы ищем по ID продавца, значениями этого аргумента будут значения в столбце B основной таблицы (Main table). Можно задать диапазон B:B (весь столбец) или, преобразовав данные в таблицу, использовать имя столбца Main_table[ID].
- criteria (критерий) – так как имена продавцов записаны в просматриваемой таблице (Lookup table), используем функцию ВПР для поиска ID, соответствующего заданному продавцу. Имя записано в ячейке F2, поэтому для поиска используем формулу:
VLOOKUP($F$2,Lookup_table,2,FALSE)
ВПР($F$2;Lookup_table;2;ЛОЖЬ)
Конечно, Вы могли бы ввести имя как искомое значение напрямую в функцию ВПР, но лучше использовать абсолютную ссылку на ячейку, поскольку так мы создаём универсальную формулу, которая будет работать для любого значения, введённого в эту ячейку.
- sum_range (диапазон_суммирования) – это самая простая часть. Так как данные о продажах записаны в столбец C, который называется Sales, то мы просто запишем Main_table[Sales].
Всё, что Вам осталось сделать, это соединить части в одно целое, и формула СУММЕСЛИ+ВПР будет готова:
=SUMIF(Main_table[ID],VLOOKUP($F$2,Lookup_table,2,FALSE),Main_table[Sales])
=СУММЕСЛИ(Main_table[ID];ВПР($F$2;Lookup_table;2;ЛОЖЬ);Main_table[Sales])
Урок подготовлен для Вас командой сайта office-guru.ru
Источник: https://www.ablebits.com/office-addins-blog/2014/08/05/excel-vlookup-sum-sumif/
Перевел: Антон Андронов
Правила перепечатки
Еще больше уроков по Microsoft Excel