Суммесли индекс поискпоз в excel совместить

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

Если в ваших таблицах всего лишь несколько десятков строк, то, скорее всего, эта статья не будет для вас актуальной. На таких небольших объемах данных любой способ будет работать достаточно шустро, чтобы вы этого не замечали. Если же число строк в ваших списках измеряется тысячами, да и самих таблиц не одна-две, то время мучительного ожидания на пересчете формул в 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 вариантов использования функции ИНДЕКС

Суммирование даных с использованием формул ИНДЕКС и ПОИСКПОЗ

Zhora

Дата: Среда, 21.11.2018, 13:18 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Доброго времени ВАМ форумчане Модераторы, Админы, Старожилы и Прохожие.
Столкнулся с трудностью.
При использовании формул ИНДЕКС и ПОИСКПОЗ, не могу добиться требуемого результата.
А именно ПОИСК ПОЗИЦИИ по Ф.И.О. и СУММИРОВАНИЕ этих нескольких значений которые находятся в столбце [u]НАЧислены ЗА ЧАСЫ и соответственно другие значения.[/u]. Эти данные должны согласно указанной Фамилии в листе ПРОБНЫЙ (В2) выписываться из листов ЯНВ. ФЕВ.МАРТ по месяцам в строку на ПРОБНОМ листе.
И так за год или энное число месяцев которые человек отработал.
Моё решение не дало результата.
%) :'( :(
Пример во вложении.
ЗАРАНЕЕ БЛАГОДАРЮ.

 

Ответить

Светлый

Дата: Среда, 21.11.2018, 13:45 |
Сообщение № 2

Группа: Друзья

Ранг: Старожил

Сообщений: 1742


Репутация:

479

±

Замечаний:
0% ±


Excel 2013, 2016

Добрый день!
Можно так:

Код

=СУММПРОИЗВ(($B2=’ЯнварьВ-ЛЯЩ’!$B3:$B9)*(F2=’ЯнварьВ-ЛЯЩ’!$L$2:$AR$2)*’ЯнварьВ-ЛЯЩ’!$L3:$AR9)


Программировать проще, чем писать стихи.

 

Ответить

_Boroda_

Дата: Среда, 21.11.2018, 13:53 |
Сообщение № 3

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Еще вариант

Код

=СУММЕСЛИ(‘ЯнварьВ-ЛЯЩ’!$B$3:$B$9;$B$2;ИНДЕКС(‘ЯнварьВ-ЛЯЩ’!$L$3:$Z$9;;ПОИСКПОЗ(F$2;’ЯнварьВ-ЛЯЩ’!$L$2:$Z$2;)))

Длинее, но теоретически должна быть быстрее


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Светлый

Дата: Среда, 21.11.2018, 14:19 |
Сообщение № 4

Группа: Друзья

Ранг: Старожил

Сообщений: 1742


Репутация:

479

±

Замечаний:
0% ±


Excel 2013, 2016

И протягиваемая по всем месяцам:

Код

=СУММПРОИЗВ(($B$2=ДВССЫЛ(«‘»&ТЕКСТ($B3;»ММММ»)&»В-ЛЯЩ’!B3:B9″))*(F$2=ДВССЫЛ(«‘»&ТЕКСТ($B3;»ММММ»)&»В-ЛЯЩ’!L2:AR2″))*Ч(+ДВССЫЛ(«‘»&ТЕКСТ($B3;»ММММ»)&»В-ЛЯЩ’!L3:AR9″)))


Программировать проще, чем писать стихи.

 

Ответить

китин

Дата: Среда, 21.11.2018, 14:49 |
Сообщение № 5

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

Замечаний:
0% ±


Excel 2007;2010;2016

а мне показалось, что надо со всех листов

Код

=ЕСЛИОШИБКА(ИНДЕКС(ДВССЫЛ(«‘»&ТЕКСТ($B3;»ММММ»)&»В-ЛЯЩ»&»‘!$L$3:$Z$9″);ПОИСКПОЗ($B$2;ДВССЫЛ(«‘»&ТЕКСТ($B3;»ММММ»)&»В-ЛЯЩ»&»‘!$B$3:$B$9″);0);ПОИСКПОЗ(F$2;ДВССЫЛ(«‘»&ТЕКСТ($B3;»ММММ»)&»В-ЛЯЩ»&»‘!$L$2:$AR$2″);0));»»)

К сообщению приложен файл:

Zhora.xlsx
(49.2 Kb)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

Zhora

Дата: Четверг, 22.11.2018, 06:36 |
Сообщение № 6

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Доброе утро. Прошу огромного извинения я наверно не правильно смог донести свою мысль.
Число находящиеся в ячейке например 2880 это не правильно. (это мой вариант решения к сожалению неправильного).
в G3 должно 9072=2880+2520+3672 (это из листа Янв) и т.д. построчно и в каждом столбце свои значения за соответствующие оплаченные работы.
Но так же ВОЗМОЖНО что преподавателю начисляется не по 3 ставкам а по одному как в примере с «Бернгардт Галина Ивановна» (она выделена зеленной заливкой) лист ЯНВ.ФЕВ.МАРТ.
ЕСЛИ это НЕОБХОДИМО ВОЗМОЖНО НЕЗНАЧИТЕЛЬНОЕ ПЕРЕМЕЩЕНИЕ СТОЛБЦОВ. НО С ЗЕЛЕНЫМИ ШАПКАМИ СТОЛБЦЫ ЭТО ЗНАЧЕНИЕ КОТОРЫЕ НАДО СКЛАДЫВАТЬ.
Также на примере ПЕРЕГОРОДОВА О.И. ОНА и преподаватель и библиотекарь и её начисления за работу надо все сложить.В примере она выделена желтой заливкой.
Кажется ВСЕ. надеюсь что смог донести вам мысль своей проблемы.
ФАЙЛ ПРИКРЕПИЛ.

К сообщению приложен файл:

9928643.xls
(95.5 Kb)

 

Ответить

Zhora

Дата: Четверг, 22.11.2018, 06:59 |
Сообщение № 7

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

УРАААААА. БЛАГОДАРЮ ЗА ПОМОЩЬ.
ВАС СВЕТЛЫЙ (ваше решение дало искомое значение но еще я не делал протягивание)
и ВАС BORODA (ваше решение тоже дало искомое значение но еще я не делал протягивание)
и ВАС КИТИН вы правильно подумали. (возможен вариант решения вашего подуманной мысли) так интересно 3 человека и 3 варианта решения КЛААСС

Ну теперь попробую дальше САМ. Но если что можно снова обратиться.

 

Ответить

_Boroda_

Дата: Четверг, 22.11.2018, 09:50 |
Сообщение № 8

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Если протягивать вниз по месяцам нужно, то вот так еще можно

Код

=СУММЕСЛИ(ДВССЫЛ(ТЕКСТ($B3;»‘МММ»»*’!B3:B9″»»));$B$2;ИНДЕКС(ДВССЫЛ(ТЕКСТ($B3;»‘МММ»»*’!L3:Z9″»»));;ПОИСКПОЗ(F$2;ДВССЫЛ(ТЕКСТ($B3;»‘МММ»»*’!L2:Z2″»»));)))

Код

=СУММПРОИЗВ(($B$2=ДВССЫЛ(«‘»&ТЕКСТ($B3;»ММММ»)&»В-ЛЯЩ’!B3:B9″))*(F$2=ДВССЫЛ(ТЕКСТ($B3;»‘МММ»»*’!L2:Z2″»»)))*ДВССЫЛ(ТЕКСТ($B3;»‘МММ»»*’!L3:Z9″»»)))


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Zhora

Дата: Суббота, 08.12.2018, 11:30 |
Сообщение № 9

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Доброго дня.
Обрадовался я рано.
Стал подстраивать в своем. ВЫХОДИТ страшное слово ССЫЛКА.
это у меня попытка. Абсолютные ссылки я пока еще не трогал.
=СУММПРОИЗВ(($B$2=ДВССЫЛ(«‘»&ТЕКСТ($B5;»ММММ»)&»Лященко!B3:B99″))*(C$2=ДВССЫЛ(«‘»&ТЕКСТ($B5;»ММММ»)&»Лященко!AE2:BL2″))*Ч(+ДВССЫЛ(«‘»&ТЕКСТ($B5;»ММММ»)&»Лященко!AE3:BL99″)))
ВОТ скрин шот. (Если еше я его правильно поставил)

эх какие ваши рекомендации будут. :( :( :(

Сообщение отредактировал ZhoraСуббота, 08.12.2018, 11:31

 

Ответить

Pelena

Дата: Суббота, 08.12.2018, 13:52 |
Сообщение № 10

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Zhora, оформите формулу тегами с помощью кнопки fx в режиме правки поста


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

На чтение 3 мин. Просмотров 6.2k.

= СУММ ( ИНДЕКС( данные ; 0 ; ПОИСКПОЗ( величины ; заголовок ; 0 )))

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

Поиск и сумма столбцов

В примере формула в I7 равна:

= СУММ(ИНДЕКС( C5: F11; 0; ПОИСКПОЗ( I6 ; C4: F4 ; 0 )))

Ядро этой функции использует функции ИНДЕКС и ПОИСКПОЗ особым образом, чтобы вернуть полный столбец вместо одного значения.

Функция ПОИСКПОЗ используется для того, чтобы найти правильный номер столбца в I6:

ПОИСКПОЗ( I6 ; C4: F4 ; 0 )

ПОИСКПОЗ возвращает 2 внутри функции ИНДЕКС в качестве аргумента номер_столбца, где массив установлен в диапазоне С5: F11.

Содержание

  1. Поиск всего столбца
  2. Поиск всей строки
  3. Поиск наименьшего значения
  4. Поиск стоимости товара или услуги
  5. Поиск с именем переменной

Поиск всего столбца

= ИНДЕКС( данные ; 0 ; ПОИСКПОЗ( значение ; заголовки ; 0 ))

Поиск всего столбца

Для поиска и извлечения всего столбца, вы можете использовать формулу, основанную на функциях ИНДЕКС и ПОИСКПОЗ. В примере используется формула для поиска всех результатов H7:

=ИНДЕКС(C5:F8;0;ПОИСКПОЗ(H6;C4:F4;0))

Суть: использовать ПОИСКПОЗ, чтобы определить индекс столбца, а затем ИНДЕКС, чтобы получить весь столбец, приравняв номер строки к нулю.

Поиск всей строки

= ИНДЕКС( данные; ПОИСКПОЗ( значение ; массив ; 0 ); 0 )

Поиск всей строки

Для поиска и извлечения всей строки, можно использовать ИНДЕКС и ПОИСКПОЗ функции. В приведенном примере формула, используемая для поиска всех значений для Центрального региона:

= ИНДЕКС( C5: F8 ; ПОИСКПОЗ( H5 ; B5: B8 ; 0 ); 0 )

Суть: использовать ПОИСКПОЗ, чтобы определить индекс строки, а затем ИНДЕКС, чтобы получить всю строку, приравняв номер столбца к нулю.

Поиск наименьшего значения

= ИНДЕКС( диапазон; ПОИСКПОЗ( МИН(величины ); величины; 0 ))

Для поиска информации, связанной с наименьшим значением в таблице, вы можете использовать формулу, основанную на ИНДЕКС, ПОИСКПОЗ и функции МИН.

Поиск наименьшего значения

В примере формула используется для определения имени исполнителя с низким предложением. Формула в F6 является:

= ИНДЕКС( B5: B9 ; ПОИСКПОЗ( МИН( C5: C9 ); C5: C9 ; 0 ))

Поиск стоимости товара или услуги

= ВПР ( продукт ; таблица ; столбец ; ЛОЖЬ)

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

Поиск стоимости товара или услуги

В примере формула в ячейке F5 является:

=ВПР(E5;B4:C6;2;0)

Эта формула использует значение ячейки E6 для поиска и извлечения правильной стоимости в диапазоне B5: C7.

Если ВПР находит соответствующее значение, связанные с этим расходы будут извлечены из 2-го столбца (столбец C). Если совпадение не найдено, ВПР возвращает #Н/A ошибку.

Поиск с именем переменной

= ВПР( величина; ДВССЫЛ( » ‘» & листов & «‘!» & «Диапазон» ); столбец; 0 )

Чтобы создать поиск с именем переменной листа, вы можете использовать функцию ВПР вместе с функцией ДВССЫЛ.

В примере формула в С5:

= ВПР ($B5 ; ДВССЫЛ( » ‘» &C$4 & «‘!» & «B5: C11»); 2; 0 )

Не могу найти решение по следующим проблемам:

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

использую формулы

атомарно для E7

=ИНДЕКС($B$10:$S$37;

ПОИСКПОЗ($B7&"*";
$B$10:$B$36;
0);

ПОИСКПОЗ(E$2;
$B$10:$S$10;
0))

строчно для F6

=ИНДЕКС($B$10:$S$37;ПОИСКПОЗ($B6&"*";$B$10:$B$36;0);ПОИСКПОЗ(F$2;$B$10:$S$10;0))

введите сюда описание изображения

Как видно использую конструкцию ПОИСКПОЗ($B6&"*";

но на выходе получаю только первое вхождение из массива. Не пойму как суммировать(

2) вторая задача вытекает из первой:

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

для H:

тот заголовок, в столбце которого содержаться значения(числа) только от непрямого вхождения названия строки (с «* ф»).

те если есть значения в «Названия строк» исходника содержится «ф_»

для I:
заголовок, который содержит прямое и непрямое/расширенное вхождение.

те если есть значения в «Названия строк» исходника «ф_» и без.

К сожалению не смог самостоятельно разобраться в сложной конструкции.

Ссылка на сам файл:
https://drive.google.com/open?id=1B42T65A5ALWQyq3K-V7sKzWRfPU4Vt0S

Добрый день.
Помогите, пожалуйста, правильно прописать формулу суммирования.
Суть формулы в следующем:
есть некие разделители данных в столбцах( в столбике M:M  — инд, в столбике L:L — списать, номера строк у разделителей одинаковые). Формула должна искать все ячейки с определенным текстом (расход[[#Эта строка];[индекс]]) в столбике M:M начиная с разделителя и суммировать соответствующее этим ячейкам значения в столбике L:L( опять же начиная с разделителя).
Исходя из логики написала вот так:
СУММЕСЛИ((АДРЕС(ПОИСКПОЗ(«инд»;[индекс];0)+1;13;2)):M6000;расход[[#Эта строка];[индекс]];(АДРЕС(ПОИСКПОЗ(«списать»;расход[количество];0)+1;12;2)):L6000)
Однако excel активно ругается на формулу.
Буду рада, если подскажите, как правильно преобразовать формулу или как иначе можно решить проблему.
Заранее спасибо.


ф-ция адрес работает в сцепке с ДВССЫЛ — ДВССЫЛ(АДРЕС(…..))
но это не лучший вариант.
Опишите суть того что вы хотите посчитать. По предыдущему посту чет не очень понял.


Вообще как-то так должно быть:
=СУММЕСЛИ(ИНДЕКС([индекс];ПОИСКПОЗ(«инд»;[индекс];0)):M6000;[@индекс];ИНДЕКС([количество];ПОИСКПОЗ(«списать»;[количество];0)):L6000)

Но лично для меня непонятно какой должен быть критерий для суммирования?

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…
www.excel-vba.ru
Просто СПАСИБО [+оказать+]
Считаешь СПАСИБО мало? Яндекс.Деньги: 41001332272872; WM: R298726502453


cheshiki1
От формулы нужно, чтобы начиная с разделителя и до конца таблицы суммировались все значения из столбика L, которым соответствует одинаковый индекс(столбик M)


cheshiki1, Prist
Большое спасибо за ответы!
Попробовала ваши варианты, остановилась на ДВССЫЛ. Все получилось, все считает=)
Еще раз большое спасибо.


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