Суммпроизв в excel аналоги

Студворк — интернет-сервис помощи студентам

Всем добрый день!

Имеется книга в которой N листов, все листы имеют одинаковое форматирование, в каждом листе 8640 строк.

Нужно просуммировать произведения ячеек B1*C1*J1 на каждом из N листов.

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

Формула для обраотки произведений построчно на одном листе, работает корректно

=СУММПРОИЗВ(’01 Jan 2020′!B1:B8640*’01 Jan 2020′!C1:C8640*’01 Jan 2020′!J1:J8640)

Как только ссылка на лист задается в виде перебора всех листов книги, через ‘*’! эксель выдает ошибку #ссылка

=СУММПРОИЗВ(’01 Jan 2020:31 Jan 2020′!B1:B8640*’01 Jan 2020:31 Jan 2020′!C1:C8640*’01 Jan 2020:31 Jan 2020′!J1:J8640)

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

Самый быстрый ВПР

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

В этом случае, правильный выбор функции, применяемой для связывания таблиц, играет решающую роль — разница в производительности между ними, как мы увидим далее, может составлять более 20 раз!

Когда я писал свою первую книжку пять лет назад, то уже делал сравнительный скоростной тест различных способов поиска и подстановки данных функциями ВПР, ИНДЕКС+ПОИСКПОЗ, СУММЕСЛИ и др. С тех пор сменилось три версии Office, появились надстройки Power Query и Power Pivot, кардинально изменившие весь процесс работы с данными. А в прошлом году ещё и обновился вычислительный движок Excel, получив поддержку динамических массивов и новые функции ПРОСМОТРХ, ФИЛЬТР и т.п.

Так что пришла пора снова взяться за секундомер и выяснить — кто же самый быстрый. Ну и, заодно, проверить — какие способы поиска и подстановки данных в Excel вы знаете :)

Подопытный кролик

Тест будем проводить на следующем примере:

Исходный пример

Это книга Excel с одним листом, где расположены две таблицы: отгрузки (500 000 строк) и прайс-лист (600 строк). Наша задача — подставить цены из прайс-листа в таблицу отгрузок. Для каждого способа будем вводить формулу в ячейку С2 и копировать вниз на весь столбец, замеряя время, которое потребуется Excel, чтобы просчитать весь столбец из полумиллиона ячеек. Полученные значения, безусловно, зависят от множества факторов (поколение процессора, объем оперативной памяти, текущая загрузка системы, версия Office и т.д.), но нам важны не конкретные цифры, а, скорее, их сравнение друг с другом. Важно понимать прожорливость каждого способа и их ограничения.

Способ 1. ВПР

Сначала — классика :) Легендарная функция вертикального просмотра — ВПР (VLOOKUP), которая приходит в голову первой в подобных ситуациях:

ВПР

Здесь участвуют следующие аргументы:

  • B2 — искомое значение, т.е. название товара, который мы хотим найти в прайс-листе
  • $G$2:$H$600 — закреплённая знаками доллара (чтобы не сползала при копировании формулы вниз) абсолютная ссылка на прайс
  • 2 — номер столбца в прайс-листе, откуда мы хотим взять цену
  • 0 или ЛОЖЬ — переключение в режим поиска точного соответствия, когда любое некорректное название товара (например, ФОНЕРА) в столбце B в таблице отгрузок приведёт к появлению ошибки #Н/Д как результата работы функции.

Время вычисления = 4,3 сек.

Способ 2. ВПР с выделением столбцов целиком

Многие пользователи, применяя ВПР, во втором аргументе этой функции, где нужно задать поисковую таблицу (прайс), выделяют не ограниченный диапазон ($G$2:$H$600), а сразу столбцы G:H целиком. Это проще, быстрее, позволяет не думать про F4 и то, что завтра прайс-лист может быть на несколько строк больше. Формула в этом случае выглядит тоже компактнее:

ВПР с выделением столбцов целиком

В старых версиях Excel такое выделение не сильно влияло на скорость вычислений, но сейчас (неожиданно для меня, признаюсь) результат получился в разы хуже предыдущего.

Время вычисления = 14,5 сек.

Однако.

Способ 3. ИНДЕКС и ПОИСКПОЗ

Следующей после ВПР ступенью эволюции для многих пользователей Microsoft Excel обычно является переход на использование связки функций ИНДЕКС (INDEX) и ПОИСКПОЗ (MATCH). Выглядит эта формула так:

ИНДЕКС и ПОИСКПОЗ

Здесь:

Функция ИНДЕКС извлекает из заданного в первом аргументе диапазона (столбца $H$2:$H$600 с ценами в прайс-листе) содержимое ячейки с заданным номером. А номер этот, в свою очередь, определяется функцией ПОИСКПОЗ, у которой три аргумента:

  • Что нужно найти — название товара из B2
  • Где мы это ищем — столбец с названиями товаров в прайсе ($G$2:$G$600)
  • Режим поиска: 0 — точный, 1 или -1 — приблизительный с округлением в меньшую или большую сторону, соответственно.

Формула выходит чуть сложнее, но, при этом имеет несколько ощутимых преимуществ перед классической ВПР, а именно:

  • Не нужно отсчитывать номер столбца (как в третьем аргументе ВПР).
  • Можно извлекать данные, которые находятся левее столбца, где просходит поиск.

По скорости, однако же, этот способ проигрывает ВПР почти в два раза:

Время вычисления = 7,8 сек.

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

ИНДЕКС и ПОИСКПОЗ с выделением столбцов целиком

… то результат получается совсем печальный:

Время вычисления = 28,5 сек.

28 секунд, Карл! В 6 раз медленнее ВПР!

Способ 4. СУММЕСЛИ

Если нужно найти не текстовые, а именно числовые данные (как в нашем случае — цену), то вместо ВПР вполне можно использовать функцию СУММЕСЛИ (SUMIF). Изначально она задумывалась как инструмент для выборочного суммирования данных по условию (найди и сложи мне все продажи кабелей, например), но можно заставить её искать нужный нам товар и в прайс-листе. Если грузы в нём не повторяются, то суммировать будет не с чем и эта функция просто выведет искомое значение:

СУММЕСЛИ

Здесь:

  • Первый аргумент СУММЕСЛИ — это диапазон проверяемых ячеек, т.е. названия товаров в прайсе ($G$2:$G$600).
  • Второй аргумент (B2) — что мы ищем.
  • Третий аргумент — диапазон ячеек с ценами $H$2:$H$600, числа из которых мы хотим просуммировать, если в соседних ячейках проверяемого диапазона есть искомое значение.

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

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

Время вычисления = 12,8 сек.

При выделении столбцов целиком, т.е. использовании формулы вида =СУММЕСЛИ(G:G; B2; H:H) всё ещё хуже:

Время вычисления = 41,7 сек.

Это самый плохой результат в нашем тесте.

Способ 5. СУММПРОИЗВ

Этот подход сейчас встречается не часто, но всё ещё достаточно регулярно. Обычно так любят извращаться пользователи старой школы, ещё хорошо помнящие те времена, когда в Excel было всего 255 столбцов и 56 цветов :)

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

СУММПРОИЗВ

Выражение ($G$2:$G$600=B2), по сути, проверяет каждое название груза в прайс-листе на предмет соответствия искомому значению (ФАНЕРА ПР). Результатом каждого сравнения будет логическое значение ИСТИНА (TRUE) или ЛОЖЬ (FALSE), что в Excel интерпретируется как 1 и 0, соответственно. Последующее умножение этих нулей и единиц на цены оставит в живых цену только того товара, который нам, в данном случае, и нужен.

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

Время вычисления = 11,8 сек.

К плюсам же такого подхода можно отнести:

  • Совместимость с любыми, самыми древними версиями Excel.
  • Возможность задавать сложные условия (и несколько)
  • Способность этой формулы работать с данными из закрытых файлов, если добавить перед ней двойное бинарное отрицание (два подряд знака «минус»). СУММЕСЛИМН таким похвастаться не может.

Способ 6. ПРОСМОТР

Ещё один относительно экзотический способ поиска и подстановки данных, наравне с ВПР — это использование функции ПРОСМОТР (LOOKUP). Только не перепутайте её с новой, буквально, на днях появившейся функцией ПРОСМОТРХ (XLOOKUP) — про неё мы поговорим дальше особо. Функция ПРОСМОТР существовала в Excel начиная с самых ранних версий и тоже вполне может решить нашу задачу:

ПРОСМОТР

Здесь:

  • B2 — название груза, которое мы ищем
  • $G$2:$G$600 — одномерный диапазон-вектор (столбец или строка), где мы ищем совпадение
  • $H$2:$H$600 — такого же размера диапазон, откуда нужно вернуть найденный результат (цену)

На первый взгляд всё выглядит очень удобно и логично, но всю картину портят два неочевидных момента:

  • Эта функция требует обязательной сортировки прайс-листа по возрастанию (алфавиту) и без этого не работает.
  • Если в таблице отгрузок искомое значение будет написано с опечаткой (например, АГЕДОЛ вместо АГИДОЛ), то функция ПРОСМОТР выдаст не ошибку #Н/Д, а цену для ближайшего предыдущего товара:

Ошибка с ПРОСМОТР

При работе с неидеальными данными в реальном мире это гарантированно создаст проблемы, как вы понимаете.

Скорость же вычислений у функции ПРОСМОТР (LOOKUP) весьма приличная:

Время вычисления = 7,6 сек.

Способ 7. Новая функция ПРОСМОТРХ

Эта функция пришла с одним из недавних обновлений пока только пользователям Office 365 и пока отсутствует во всех остальных версиях (Excel 2010, 2013, 2016, 2019). По сравнению с классической ВПР у этой функции есть масса преимуществ (упрощенный синтаксис, возможность искать не только сверху-вниз, возможность сразу задать значение вместо #Н/Д и т.д.) Формула для решения нашей задачи будет выглядеть в этом случае так:

ПРОСМОТРХ

Если не брать в расчёт необязательные 4,5,6 аргументы, то синтаксис этой функции полностью совпадает с её предшественником — функцией ПРОСМОТР (LOOKUP). Скорость вычислений при тестировании на наши 500000 строк тоже оказалась аналогичной:

Время вычисления = 7,6 сек.

Почти в два раза медленнее, чем у ВПР, вместо которой Microsoft предлагает теперь использовать ПРОСМОТРХ. Жаль.

И, опять же, если полениться и выделить диапазоны в прайс-листе целыми столбцами:

ПРОСМОТРХ и выделение столбцов целиком

… то скорость падает до совершенно неприличных уже значений:

Время вычисления = 28,3 сек.

А если на динамических массивах?

Прошлогоднее (осень 2019) обновление вычислительного движка Microsoft Excel добавило ему поддержку динамических массивов (Dynamic Arrays), о которых я уже писал. Это принципиально новый подход к работе с данными, который можно использовать почти с любыми классическими функциями Excel. На примере ВПР это будет выглядеть так:

ВПР на динамических массивах

Разница с классическим вариантом в том, что первым аргументом ВПР здесь выступает не одно искомое значение (а формулу потом нужно копировать вниз на остальные строки), а сразу весь массив из полумиллиона грузов B2:B500000, цены для которых мы хотим найти. Формула при этом сама распространяется вниз, занимая требуемое количество ячеек.

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

Время вычисления = 1 сек.

Что интересно, и новая ПРОСМОТРХ, и старая ПРОСМОТР, и связка ИНДЕКС+ПОИСКПОЗ в таком режиме тоже были очень быстрыми — время вычислений не больше 1 секунды! Фантастика.

А вот олдскульные подходы на основе СУММПРОИЗВ и СУММЕСЛИ(МН) с динамическими массивами работать отказались :(

Что с умными таблицами?

Обрадовавшись фантастическим результатам, полученным на динамических массивах, я решил вдогон попробовать протестировать разницу в скорости при работе с обычными и «умными» таблицами. Я имею ввиду те самые «красивые таблицы», в которые вы можете преобразовать ваш диапазон с помощью команды Форматировать как таблицу на вкладке Главная (Home — Format as Table) или с помощью сочетания клавиш Ctrl+T.

Если предварительно превратить наши отгрузки и прайс в «умные» (по умолчанию они получат имена Таблица1 и Таблица2, соответственно), то формула с той же ВПР будет выглядеть как:

ВПР на умных таблицах

Здесь:

  • [@Груз] — ссылка на ячейку B2, означающая, в данном случае, что нужно взять значение из той же строки из столбца Груз текущей умной таблицы.
  • Таблица2 — ссылка на прайс-лист

Жирным плюсом такого подхода будет возможность легко добавлять данные в наши таблицы в будущем. При дописывании новых строк в отгрузки или к прайс-листу, наши «умные» таблицы будут растягиваться автоматически.

Скорость же, как выяснилось, тоже вырастает очень значительно и примерно равна скорости работы на динамических массивах:

Время вычисления = 1 сек.

У меня есть подозрение, что дело тут не в самих «умных» таблицах, а всё в том же обновлении вычислительного движка, т.к. на старых версиях Excel такого прироста в скорости на умных таблицах я не помню.

Бонус. Запрос Power Query

Замерять, так замерять! Давайте, для полноты картины, сравним наши перечисленные способы еще и с запросом Power Query, который тоже может решить нашу задачу. Кто-то скажет, что некорректно сравнивать пересчёт формул с механизмом обновления запроса, но мне, откровенно говоря, просто самому было интересно — кто быстрее?

Итак:

  1. Превращаем обе наши таблицы в «умные» с помощью команды Форматировать как таблицу на вкладке Главная (Home — Format as Table) или с помощью сочетания клавиш Ctrl+T.
  2. По очереди загружаем таблицы в Power Query с помощью команды Данные — Из таблицы / диапазона (Data — From Table/Range).
  3. После загрузки в Power Query возвращаемся обратно в Excel, оставляя загруженные данные как подключение. Для этого в окне Power Query выбираем Главная — Закрыть и загрузить — Закрыть и загрузить в… — Только создать подключение (Home — Close&Load — Close&Load to… — Only create connection).
  4. После того, как обе исходные таблицы будут загружены как подключения, создадим ещё один, третий запрос, который будет объединять их между собой, подставляя цены из прайса в отгрузки. Для этого на вкладке Данные выберем Получить данные / Создать запрос — Объединить запросы — Объединить (Get Data / New Query — Merge queries — Merge):

    Объединяем запросы

  5. В открывшемся окне выберем исходные таблицы в выпадающих списках и выделим столбцы, по которым произойдет связывание:

    Настройки объединения

  6. После нажатия на ОК мы вернемся в окно Power Query, где увидим нашу таблицу отгрузок с добавленным к ней столбцом, где в каждой ячейке будет лежать фрагмент прайс-листа, соответствующий этому грузу. Развернем вложенные таблицы с помощью кнопки с двойными стрелками в шапке столбца, выбрав нужные нам данные (цены):

    Разворачиваем вложенные таблицы после объединения

  7. Останется выгрузить готовую таблицу обратно на лист с помощью уже знакомой команды Главная — Закрыть и загрузить (Home — Close&Load).

В отличие от формул, запросы Power Query не обновляются автоматически «на лету», а требуют щелчка правой кнопкой мыши по таблице (или запросу в правой панели) и выбору команды Обновить (Refresh). Также можно воспользоваться командой Обновить все (Refresh All) на вкладке Данные (Data).

Время обновления = 8,2 сек.

Итоговая таблица и выводы

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

Итоговая таблица результатов

Само-собой, у каждого из нас свои предпочтения, задачи и тараканы, но для себя я сформулировал выводы после этого тестирования так:

  • ВПР всё ещё главная рабочая лошадка. После прошлогодних обновлений, ускоряющих ВПР, и осенних обновлений вычислительного движка, эта функция заиграла новыми красками и даёт жару по-полной.
  • Не нужно лениться и выделять столбцы целиком — для всех способов без исключения это ухудшает результаты почти в 3 раза.
  • Экзотические способы из прошлого типа СУММПРОИЗВ и СУММЕСЛИ — в топку. Они работают очень медленно и, вдобавок, не поддерживают динамические массивы.
  • Динамические массивы и умные таблицы — это будущее.

К сожалению, у меня не было возможностей полноценно протестировать эти методы на старых версиях Excel и на Excel for Mac (запускать эмуляцию Office на виртуальной машине и тестировать скорость — не есть правильно). Буду благодарен, если вы сможете найти время, чтобы прогнать эти способы на своих ПК и версиях и поделитесь результатами и своими мыслями в комментариях, чтобы вместе мы смогли составить полную картину.

Ссылки по теме

  • Как использовать функцию ВПР для подстановки значений в Excel
  • Функция ПРОСМОТРХ как наследник ВПР
  • 5 вариантов использования функции ИНДЕКС

Содержание

  • Вычисление суммы произведения
    • Способ 1: использование математической формулы
    • Способ 2: работа со ссылками
    • Способ 3: использование функции СУММПРОИЗВ
    • Способ 4: применение функции по условию
  • Вопросы и ответы

Сумма произведений в Microsoft Excel

При выполнении некоторых расчетов требуется находить сумму произведений. Этот вид вычислений часто выполняют бухгалтера, инженеры, планировщики, учащиеся образовательных учреждений. Например, данный способ расчета востребован для сведения общего количества заработной платы за отработанные дни. Выполнение этого действия может понадобиться и в других отраслях, и даже для бытовых нужд. Давайте выясним, как в программе Excel можно рассчитать сумму произведений.

Вычисление суммы произведения

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

Способ 1: использование математической формулы

Большинству пользователей известно, что в Экселе можно выполнить значительное количество математических действий просто поставив знак «=» в пустой ячейке, а далее записав выражение по правилам математики. Этот способ можно использовать и для нахождения суммы произведений. Программа, согласно математическим правилам, сразу подсчитывает произведения, а уже потом складывает их в общую сумму.

  1. Устанавливаем знак «равно» (=) в ячейке, в которой будет выводиться результат производимых вычислений. Записываем туда выражение суммы произведений по следующему шаблону:

    =a1*b1*…+a2*b2*…+a3*b3*…+…

    Например, таким способом можно рассчитать выражение:

    =54*45+15*265+47*12+69*78

  2. Формула суммы произведений в Microsoft Excel

  3. Чтобы произвести расчет и вывести его результат на экран, жмем на кнопку Enter на клавиатуре.

Результат расчета формулы суммы произведений в Microsoft Excel

Способ 2: работа со ссылками

Вместо конкретных чисел в этой формуле можно указывать ссылки на ячейки, в которых они расположены. Ссылки можно вписать вручную, но удобнее это делать, выделив после знака «=», «+» или «*» соответствующую ячейку, в которой содержится число.

  1. Итак, сразу записываем выражение, где вместо чисел указаны ссылки на ячейки.
  2. Формула суммы произведений со ссылками в Microsoft Excel

  3. Затем, чтобы произвести подсчет, кликаем по кнопке Enter. Результат вычисления будет выведен на экран.

Результат расчета формулы суммы произведений со ссылками в Microsoft Excel

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

Урок: Работа с формулами в Excel

Способ 3: использование функции СУММПРОИЗВ

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

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

Lumpics.ru

Синтаксис данной функции имеет такой вид:

=СУММПРОИЗВ(массив1;массив2;…)

Аргументами этого оператора являются диапазоны данных. При этом они сгруппированы по группам множителей. То есть, если отталкиваться от шаблона, о котором мы говорили выше (a1*b1*…+a2*b2*…+a3*b3*…+…), то в первом массиве располагаются множители группы a, во втором – группы b, в третьем – группы c и т.д. Данные диапазоны обязательно должны быть однотипными и равными по длине. Располагаться они могут, как вертикально, так и горизонтально. Всего данный оператор может работать с количеством аргументов от 2 до 255.

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

  1. Выделяем ячейку на листе, в которой будет выводиться итоговый результат. Жмем на кнопку «Вставить функцию». Она оформлена в виде пиктограммы и располагается слева от поля строки формул.
  2. Переход в Мастер функций в Microsoft Excel

  3. После того, как пользователь произвел данные действия, запускается Мастер функций. В нем открывается список всех, за малым исключением, операторов, с которыми можно работать в Экселе. Чтобы найти нужную нам функцию, переходим в категорию «Математические» или «Полный алфавитный перечень». После того, как нашли наименование «СУММПРОИЗВ», выделяем его и жмем на кнопку «OK».
  4. Переход к аргументам функции СУММПРОИЗВ в Microsoft Excel

  5. Запускается окно аргументов функции СУММПРОИЗВ. По количеству аргументов оно может иметь от 2 до 255 полей. Адреса диапазонов можно вбивать вручную. Но это займет значительное количество времени. Можно сделать несколько по-другому. Устанавливаем курсор в первое поле и выделяем с зажатой левой кнопкой мыши массив первого аргумента на листе. Таким же образом поступаем со вторым и со всеми последующими диапазонами, координаты которых сразу же отображаются в соответствующем поле. После того, как все данные введены, жмем на кнопку «OK» в нижней части окна.
  6. Аргументы функции СУММПРОИЗВ в Microsoft Excel

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

Результаты вычисления функции СУММПРОИЗВ в Microsoft Excel

Урок: Мастер функций в Excel

Способ 4: применение функции по условию

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

У нас есть таблица окладов и отработанных дней работников предприятия за три месяца помесячно. Нам нужно узнать, какую сумму на протяжении этого периода заработал сотрудник Парфенов Д.Ф.

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

    ="Парфенов Д.Ф."

    После того, как все данные внесены, жмем кнопку «OK».

  2. Аргументы функции СУММПРОИЗВ с условием в Microsoft Excel

  3. Приложение производит вычисление. В расчет берутся только строчки, в которых присутствует имя «Парфенов Д.Ф», то есть то, что нам и нужно. Результат вычислений отображается в предварительно выделенной ячейке. Но результат равен нулю. Это связано с тем, что формула в том виде, в котором она существует сейчас, работает некорректно. Нам нужно её немного преобразовать.
  4. Промежуточный результат вычисления по условию в Microsoft Excel

  5. Для того чтобы преобразовать формулу, выделяем ячейку с итоговым значением. Выполняем действия в строке формул. Аргумент с условием берем в скобки, а между ним и другими аргументами точку с запятой меняем на знак умножения (*). Жмем на кнопку Enter. Программа производит подсчет и на этот раз выдает уже корректное значение. Мы получили общую сумму заработной платы за три месяца, которая причитается сотруднику предприятия Парфенову Д. Ф.

Итоговый результат вычисления по условию в Microsoft Excel

Таким же образом можно применять условия не только к тексту, но и к числам с датами, добавляя знаки условия «<», «>», «=», «< >».

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

Этот учебник научит вас нескольким простым способам суммирования нескольких столбцов в Excel на основе одного или нескольких критериев.

Выполнение условной суммы в Excel не составляет труда, если все значения, которые нужно суммировать, находятся в одном столбце. Суммирование нескольких столбцов представляет собой проблему, поскольку обе функции СУММЕСЛИ и СУММЕСЛИМН требуют, чтобы диапазон суммы и диапазон критериев были одинакового размера. К счастью, когда нет прямого способа что-то сделать, всегда есть обходной путь 🙂

  • Суммировать несколько столбцов с одним условием
  • Суммируйте несколько столбцов с двумя или более критериями

Сумма Excel Если: несколько столбцов, один критерий

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

Вопрос в том, как получить общий объем продаж определенного товара?

Первая идея, которая приходит на ум, — использовать формулу СУММЕСЛИ в чистом виде:

=СУММЕСЛИ(A2:A10, «яблоки», C2:E10)

К сожалению, это не сработает. Причина в том, что размеры сумма_диапазон определяются Excel автоматически на основе размеров диапазон аргумент. Поскольку диапазон наших критериев включает только один столбец (A2:A10), то же самое относится и к диапазону суммы (C2:C10). сумма_диапазон параметр, определенный в формуле (C2:E10), фактически определяет только верхнюю левую ячейку диапазона, который будет суммироваться. В результате приведенная выше формула суммирует продажи яблок только в столбце C. Не то, что мы ищем, а?

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

Итак, продолжайте и поместите формулу СУММ в F2, затем перетащите ее вниз на столько ячеек, сколько необходимо:

=СУММ(C2:E2)

После этого можно быстро выполнить работу:

=СУММЕСЛИ(A2:A10, I1, F2:F10)

Где I1 представляет интерес.

В приведенной выше формуле сумма_диапазон имеет такой же размер, как диапазон (1 столбец и 9 строк), поэтому работает без сучка и задоринки:
Добавление вспомогательного столбца для суммирования нескольких столбцов с условием

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

SUMIF несколько столбцов

Идея состоит в том, чтобы написать отдельную формулу СУММЕСЛИ для каждого из столбцов, которые вы хотите суммировать, а затем сложить результаты:

СУММ(СУММЕСЛИ(…), СУММЕСЛИ(…), СУММЕСЛИ(…))

Или же

СУММЕСЛИ(…) + СУММЕСЛИ(…) + СУММЕСЛИ(…)

Практическая реализация выглядит следующим образом:

=СУММ(СУММЕСЛИ(A2:A10,H1,C2:C10), СУММЕСЛИ(A2:A10,H1,D2:D10), СУММЕСЛИ(A2:A10,H1,E2:E10))

Или же

=СУММЕСЛИ(A2:A10, H1, C2:C10) + СУММЕСЛИ(A2:A10, H1, D2:D10) + СУММЕСЛИ(A2:A10, H1, E2:E10)

Вы также можете «жестко закодировать» условие в формуле, если это необходимо:

=СУММЕСЛИ(A2:A10, «Яблоки», C2:C10) + СУММЕСЛИ(A2:A10, «Яблоки», D2:D10) + СУММЕСЛИСЛИ(A2:A10, «Яблоки», E2:E10)

Формула СУММЕСЛИ для нескольких столбцов

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

СУММ как формула массива

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

СУММА((сумма_диапазон) * (—(критерии_диапазонзнак равнокритерии)))

Для нашего примера набора данных формула принимает следующий вид:

=СУММ((C2:E10)*(—(A2:A10=H1)))

Или же

=СУММ((C2:E10)*(—(A2:A10=»Яблоки»)))

В Excel 2019 и более ранних версиях вы должны нажать Ctrl + Shift + Enter, чтобы правильно завершить формулу. В Excel 365 и Excel 2021 это работает как обычная формула благодаря встроенной поддержке динамических массивов.
Условное суммирование нескольких столбцов

Как работает эта формула:

Основная концепция состоит в том, чтобы умножить элементы этих двух массивов:

  • (C2:E10) — все значения в диапазоне суммы. В нашем случае массив содержит 27 элементов (3 столбца и 9 строк: {250,120,210;155,180,210;130,175,125; …}
  • (—(A2:A10=H1)) — сравнивает каждое значение в A2:A10 с целевым элементом в H1. Результатом является массив значений TRUE (условие выполнено) и FALSE (условие не выполнено), который затем преобразуется в массив из 1 и 0 с помощью двойного унарного оператора: {0;1;0 ;0;1;0;0;1;1}

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

Поскольку умножение на ноль дает ноль, выживают только числа, для которых критерий ИСТИНА, и функция СУММ складывает их:

=СУММ({0,0,0;155,180,210;0,0,0;0,0,0;160,140,170;0,0,0;0,0,0;…})

Чтобы упростить понимание логики формулы, вы можете написать первый множитель следующим образом:

=СУММ((C2:C10 + D2:D10 + E2:E10) * (—(A2:A10=H1)))

Это создаст массив сумм по строкам (как вспомогательный столбец в самом первом примере), который затем умножается на массив из 1 и 0:

{580;545;430;615;470;750;550;620;570}*{0;1;0;0;1;0;0;1;1}

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

=СУММ({0;545;0;0;470;0;0;620;570})

Не нравится использовать формулы массивов на листе? Я тоже. Что ж, давайте проверим следующее решение 🙂

формула СУММПРОИЗВ

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

СУММПРОИЗВ((сумма_диапазон) * (критерии_диапазонзнак равнокритерии))

Реальная формула выглядит следующим образом:

=СУММПРОИЗВ((C2:E10) * (A2:A10=H1))

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

Сумма Excel, если: несколько столбцов, несколько критериев

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

СУММЕСЛИМН + СУММЕСЛИМН для суммирования нескольких столбцов

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

СУММ(СУММЕСЛИМН(…), СУММИММН(…), СУММИММН(…))

Или же

СУММЕСЛИМН(…) + СУММЕСЛИМН(…) + СУММЕСЛИМН(…)

Например, для суммирования продаж винограда (H1) в Северном регионе (H2) используется следующая формула:

=СУММЕСЛИМН(C2:C10, A2:A10, H1, B2:B10, H2) + СУММЕСЛИМН(D2:D10, A2:A10, H1, B2:B10, H2) + СУММЕСЛИМН(E2:E10, A2:A10, H1) , В2:В10, Н2)
Формула СУММЕСЛИМН для нескольких столбцов

Формула массива для условного суммирования нескольких столбцов

Формула СУММ для нескольких критериев очень похожа на формулу для одного критерия — вы просто включаете дополнительные пары критерии_диапазон=критерий:

СУММА((сумма_диапазон) * (—(критерии_диапазон1знак равнокритерии1)) * (—(критерии_диапазон2знак равнокритерии2)))

Например, чтобы суммировать продажи товара в H1 и региона в H2, формула выглядит следующим образом:

=СУММ((C2:E10) * (—(A2:A10=H1)) * (—(B2:B10=H2)))

В Excel 2019 и более ранних версиях не забудьте нажать Ctrl + Shift + Enter, чтобы сделать формулу массива CSE. В динамических массивах Excel 365 и 2021 обычная формула будет работать нормально, как показано на снимке экрана:
Суммировать несколько столбцов с несколькими критериями

Формула СУММПРОИЗВ с несколькими критериями

Самый простой способ суммировать несколько столбцов на основе нескольких критериев — это формула СУММПРОИЗВ:

СУММПРОИЗВ((сумма_диапазон) * (критерии_диапазон1знак равнокритерии1) * (критерии_диапазон2знак равнокритерии2))

Как видите, она очень похожа на формулу СУММ, но не требует дополнительных манипуляций с массивами.

Для суммирования нескольких столбцов с двумя критериями используется следующая формула:

=СУММПРОИЗВ((C2:E10) * (A2:A10=H1) * (B2:B10=H2))
Формула СУММПРОИЗВ для нескольких столбцов с двумя критериями

Это 3 способа суммирования нескольких столбцов на основе одного или нескольких условий в Excel. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!

Практическая рабочая тетрадь для скачивания

Сумма, если несколько столбцов — примеры (файл .xlsx)

Вас также могут заинтересовать:

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

Функция СУММЕСЛИ и несколько условий в одном диапазоне Excel

Допустим нам необходимо суммировать числовые значения в границах дат от 23-го и до 29-го июня включительно. Начальные и конечные даты введены в соответствующих ячейках дополнительной таблицы для составления запросов выборки из исходной таблицы. Ниже на рисунке изображены исходные значения и условия отбора значений для суммирования:

СУММЕСЛИ и несколько условий.

Описанная данная техника суммирования по нескольким условиям с помощью функции СУММЕСЛИ основана на вычитании. В данной формуле первая функция СУММЕСЛИ возвращает сумму значений, соответствующих датам раньше конечной даты в ячейке E3 или равной этой дате (в данном случаи =29-е Июня). Оператор «меньше» объединен символом амперсант (&) со ссылкой на ячейку E2 (начальной даты).

Когда формула содержала бы только первую функцию =СУММЕСЛИ(A2:A12;»<=»&E3;B2:B12), тогда итоговый результат составил = 5721.

первую функция формулы.

Но нам необходимо получить сумму чисел в границах между 25-ым и 29-ым числом Июня месяца включительно, а не между 20-ым и 29-ым. Для этого необходимо вычесть из первого итогового результата 5721,00 сумму чисел раньше даты 25-го Июня – 3 726,50.

Данного результата мы добиваемся с помощью повторного использования такой же функции СУММЕСЛИ, но с немного измененным вторым аргументом СУММЕСЛИ(A2:A12;»<«&E2;B2:B12).

вторая часть формулы.

Теперь проверим разницу вычислений двух частей формулы с помощью вычитания:

вычитание СУММЕСЛИ.

Суммирование числовых значений, соответствующих датам раньше конечной даты (29-го Июня и равной ей) с последующим вычитанием от данного результата суммы всех числовых значений, относящихся к датам раньше от начальной (25-го Июня) позволяет получить сумму всех чисел в границах соответствующим датам заданного периода в таблице составления запроса выборки.



Пример функции СУММЕСЛИМН с несколькими условиями в Excel

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

Пример функции СУММЕСЛИМН.

Она выборочно суммирует только те значение ячеек в диапазоне B2:B12, которые выполняют условия определенных в двух парах аргументов. Первое условие «<=»&E3 – является идентичным условию первой функции СУМЕСЛИ из предыдущего примера. Второе условие «>=»&E2 – ограничивает вычисление исключив все числа до начальной даты.

Пример функции СУММПРОИЗВ для суммы диапазона по нескольким условиям

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

Пример функции СУММПРОИЗВ.

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

Данные вычисления основаны на умножении логических значений и числовых в столбце B2:B12. Результаты вычислений в первых двух логических выражений возвращают логические значения ИСТИНА=1 и ЛОЖЬ=0. Если хоть один из множителей будет равен нулю, то и результат = 0. Например, как читает данная формула первую строку:

ИСТИНА*ЛОЖЬ*876,50=0

то есть:

1*0*876,50=0

Если же оба логические выражения возвращают значение ИСТИНА, тогда текущая ячейка столбца B с показателем продаж умножается на единицы, а затем суммируются все найденные значения. Для наглядного примера сформируем таблицу как видит формула СУММПРОИЗВ текущую ситуацию:

ИСТИНА на ЛОЖЬ.

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

Понравилась статья? Поделить с друзьями:
  • Суммквразн в excel это
  • Суммирование со смещением в excel
  • Суммировать ячейки vba excel
  • Суммквразн в excel примеры
  • Суммирование с шагом в excel