Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Еще…Меньше
Просто с помощью редактора Power Query вы создавали формулы Power Query. Давайте посмотрим, как работает Power Query, посмотрев на него. Чтобы узнать, как обновлять или добавлять формулы, просто посмотрите редактор Power Query в действии. Вы даже можете скатить собственные формулы с помощью расширенных редакторов.
Редактор Power Query предоставляет запросы и возможности формирования данных для Excel, которые можно использовать для повторного формирования данных из различных источников. Чтобы отобразить окно редактора Power Query,импортировать данные из внешних источников на Excel, выбрать ячейку в данных, а затем выбрать запрос >Изменить. Ниже следующую сводку основных компонентов.
-
Лента редактора Power Query, используемая для формировании данных
-
The Queries pane that you use to locate data sources and tables
-
Контекстные меню, удобные для быстрого доступа к командам на ленте
-
Предварительный просмотр данных с результатами действий, примененных к данным
-
В области Параметры запроса со списком свойств и каждого шага запроса
При этом каждый шаг запроса основан на формуле, которая отображается в панели формул.
Иногда нужно изменить или создать формулу. В формулах используется язык формул Power Query, который можно использовать для создания как простых, так и сложных выражений. Дополнительные сведения о синтаксисе, аргументах, замечаниях, функциях и примерах см. в power Query M formula language.
Используя в качестве примера список футбольного мяча, используйте Power Query, чтобы получить необработанные данные, найденные на веб-сайте, и превратить их в хорошо отформатированную таблицу. Посмотрите, как создаются шаги запроса и соответствующие формулы для каждой задачи в области запроса Параметры в области Примененные шаги и в области формул.
Последовательность действий
-
Чтобы импортировать данные, выберите данные > из Интернета,введите «http://en.wikipedia.org/wiki/UEFA_European_Football_Championship» в поле URL-адрес, а затем выберите ОК.
-
В диалоговом окне Навигатор выберите таблицу Результаты [Изменить] слева, а затем выберите Преобразовать данные в нижней части. Появится редактор Power Query.
-
Чтобы изменить имя запроса по умолчанию, в области запроса Параметры в области Свойства удалите «Результаты [Изменить]», а затем введите «ЫК».
-
Чтобы удалить ненужные столбцы, выберите первый, четвертый и пятый столбцы, а затем выберите главная> удалить столбец > удалить другие столбцы.
-
Чтобы удалить ненужные значения, выберите Столбец1, выберите Главная> Заменитьзначения , введите «сведения» в поле Значения для поиска, а затем выберите ОК.
-
Чтобы удалить строки со словом «Год», выберите стрелку фильтра в столбце «Столбец1»,снимите его рядом с полем «Год», а затем выберите ОК.
-
Чтобы переименовать столбцы, дважды щелкните каждый из них, а затем измените «Столбец1» на «Год», «Столбец4» на «Winner» и «Столбец5» на «Итоговая оценка».
-
Чтобы сохранить запрос, выберите главная >Закрыть & загрузить.
Результат
В следующей таблице содержится сводка каждого примененного шага и соответствующей формулы.
Шаг запроса и задача |
Формула |
---|---|
Source Подключение к веб-источнику данных |
= Web.Page(Web.Contents(«http://en.wikipedia.org/wiki/UEFA_European_Football_Championship»)) |
Navigation Выбор таблицы |
=Source{2}[Data] |
Changed Type Изменение типов данных (которые Power Query делает автоматически) |
= Table.TransformColumnTypes(Data2,{{«Column1», type text}, {«Column2», type text}, {«Column3», type text}, {«Column4», type text}, {«Column5», type text}, {«Column6», type text}, {«Column7», type text}, {«Column8», type text}, {«Column9», type text}, {«Column10», type text}, {«Column11», type text}, {«Column12», type text}}) |
Удалены другие столбцы Удаление ненужных столбцов |
= Table.SelectColumns(#»Changed Type»,{«Column1», «Column4», «Column5»}) |
Заменено значение Замена значений для очистки значений в выбранном столбце |
= Table.ReplaceValue(#»Removed Other Columns»,»Details»,»»,Replacer.ReplaceText,{«Column1»}) |
Отфильтрованные строки Фильтрация значений в столбце |
= Table.SelectRows(#»Replaced Value», each ([Column1] <> «Year»)) |
Переименованные столбцы Измененные заглавные столбцы должны быть осмысленными |
= Table.RenameColumns(#»Filtered Rows»,{{«Column1», «Year»}, {«Column4», «Winner»}, {«Column5», «Final Score»}}) |
Важно Будьте внимательны при редактировании действий«Источник»,»Навигация» и «Измененный тип», поскольку они создаются Power Query для определения и создания источника данных.
Показ или скрытие панели формул
По умолчанию отображается формула, но если она не видна, ее можно отыгрывать.
-
Выберите Просмотр >макета > формул.
Edit a formula in the formula bar
-
Чтобы открыть запрос, найдите ранее загруженную из редактора Power Query, выберем ячейку в данных и выберите запрос> Изменить. Дополнительные сведения см. в этойExcel.
-
В области Параметры запроса в области Примененныешаги выберите шаг, который вы хотите изменить.
-
В области формул найдите и измените значения параметров, а затем нажмите ввод. Например, измените эту формулу, чтобы сохранить столбец 2:
До: = Table.SelectColumns(#»Changed Type»,{«Column4», «Column1», «Column5»})
после:= Table.SelectColumns(#»Changed Type»,{«Column2», «Column4», «Column1», «Column5»}) -
Нажмите значок или нажмите ввод, чтобы увидеть новые результаты в режиме предварительного просмотра данных.
-
Чтобы увидеть результат на Excel, выберите Главная > Закрыть & Загрузка.
Создание формулы в панели формул
Для простого примера формулы преобразуем текстовое значение в нужный с помощью функции Text.Proper.
-
Чтобы открыть пустой запрос, в Excel выберите Данные> Получить данные > из других источников > Пустой запрос. Дополнительные сведения см. в этойExcel.
-
Введите в формулу=Text.Proper(«text value»), а затем нажмите ввод.
Результаты отображаются в режиме предварительного просмотра данных.
-
Чтобы увидеть результат на Excel, выберите Главная > Закрыть & Загрузка.
Результат:
При создании формулы Power Query проверяет ее синтаксис. Однако при вставке, переусортовке или удалении промежуточного шага запроса это может привести к разрыву запроса. Всегда проверять результаты в режиме предварительного просмотра данных.
Важно Будьте внимательны при редактировании действий«Источник»,»Навигация» и «Измененный тип», поскольку они создаются Power Query для определения и создания источника данных.
Редактирование формулы в диалоговом окне
Этот способ позволяет использовать диалоговое окно, которое зависит от шага. Синтаксис формулы знать не нужно.
-
Чтобы открыть запрос, найдите ранее загруженную из редактора Power Query, выберем ячейку в данных и выберите запрос> Изменить. Дополнительные сведения см. в этойExcel.
-
В области Параметры запроса в области Примененные шаги щелкните значок Изменить Параметры действия, который вы хотите изменить, или щелкните его правой кнопкой мыши и выберите изменить Параметры .
-
В диалоговом окне внести изменения и нажмем ОК.
Вставка шага
После выполнения шага запроса, в который были добавлены данные, шаг запроса добавляется под текущим этапом запроса. но при вставке шага запроса в середине шагов может возникнуть ошибка в последующих действиях. При попытке вставить новый шаг При попытке вставить новый шаг в Power Query отображается предупреждение Вставка шага, при этом изменяются поля, например имена столбцов, которые используются на всех шагах, которые следуют за ним.
-
В области Параметры запроса в области Примененныешаги выберите шаг, который должен предшествовать новому шагу и соответствующей формуле.
-
Выберите значок Добавить слева от панели формул. Можно также щелкнуть правой кнопкой мыши шаг и выбрать Вставить шаг после.Новая формула будет создана в формате := <nameOfTheStepToReference>
, например =Production.WorkOrder.
-
Введите новую формулу в формате:
=Class.Function(ReferenceStep[,otherparameters])
Например, предположим, что у вас есть таблица со столбцом Gender и вы хотите добавить столбец со значением «Ms». или «г-н», в зависимости от пола человека. Формула будет:
=Table.AddColumn(<ReferencedStep>, «Prefix», each if [Gender] = «F» then «Ms.» else «Mr.»)
Переусортовка шага
-
В области Запросы Параметры в области Примененныешаги щелкните правой кнопкой мыши шаг, а затем выберите Вверх илиВниз.
Удаление шага
-
Щелкните значок слева от шага или щелкните его правой кнопкой мыши и выберите удалить или Удалить до конца. Значок удаления также доступен слева от панели формул.
В этом примере мы преобразуем текст в столбце в нужный с помощью сочетания формул в расширенный редактор.
Например, у вас есть Excel «Заказы» со столбцом ProductName, который нужно преобразовать в нужный пример.
До:
После:
При создании расширенных запросов создается ряд шагов формулы запроса на основе выражения let. Используйте выражение let для назначения имен и вычисления значений, на которые затем ссылается предложение in, которое определяет шаг. Этот пример возвращает тот же результат, что и в разделе «Создание формулы в панели формул».
let
Source = Text.Proper(«hello world»)
in
Source
Вы увидите, что каждый шаг строится на основе предыдущего шага, ссылаясь на шаг по имени. Напоминаем, что в языке формул Power Query с чувствительностью к делу.
Этап 1. Открытие расширенных редакторов
-
В Excel выберите Данные> Получить данные > другие источники > пустой запрос. Дополнительные сведения см. в этойExcel.
-
В редакторе Power Query выберите главная> Расширенный редактор, который откроется с шаблоном выражения let.
Этап 2. Определение источника данных
-
Чтобы загрузить запрос на таблицу, выберите Готово ,а затем выберите Главная> Закрыть & Загрузка > Закрыть & Загрузить.
Результат:
Этап 3. Продвижение первой строки до заглавных
-
Чтобы открыть запрос, выберем ячейку с данными на > запрос. Дополнительные сведения см. в статьи Создание, загрузка и изменение запроса в Excel (Power Query).
-
В редакторе Power Query выберите Главная > Расширенный редактор, который откроется с помощью выписки, созданной на этапе 2:Определение источника данных.
-
В выражении let добавьте #»First Row as Header» и Table.PromoteHeaders следующим
образом:
let
Source = Excel.CurrentWorkbook(){[Name=»Orders»]}[Content],
#»First Row as Header» = Table.PromoteHeaders(Source)#x3#»First Row as Header»
-
Чтобы загрузить запрос на таблицу, выберите Готово ,а затем выберите Главная> Закрыть & Загрузка > Закрыть & Загрузить.
Результат:
Этап 4. Изменение каждого значения в столбце на правильное
-
Чтобы открыть запрос, выберем ячейку с данными на > запрос. Дополнительные сведения см. в этойExcel.
-
В редакторе Power Query выберите Главная> Расширенный редактор, который откроется с заявлением, созданным на этапе 3: Повысить первую строку до заглавных.
-
В выражении let преобразуйте каждое значение столбца ProductName в правильный текст с помощью функции Table.TransformColumns, ссылаясь на предыдущий шаг формулы запроса «Первая строка в качестве заглавного текста», добавив к источнику данных значение #»Заглавная буква каждого слова», а затем назначив результат «#»Преобразование каждого слова» в заглавную букву.
let
Source = Excel.CurrentWorkbook(){[Name=»Orders»]}[Content],
#»First Row as Header» = Table.PromoteHeaders(Source),
#»Capitalized Each Word» = Table.TransformColumns(#»First Row as Header»,{{«ProductName», Text.Proper}})
in
#»Capitalized Each Word» -
Чтобы загрузить запрос на таблицу, выберите Готово ,а затем выберите Главная> Закрыть & Загрузка > Закрыть & Загрузить.
Результат:
Вы можете управлять поведением панели формул в редакторе Power Query для всех книг.
Отображение или скрытие панели формул
-
Выберите Параметры> файла и Параметры > параметры запроса.
-
В левой области в области GLOBALвыберите Редактор Power Query.
-
В области справа в области Макет выберитеили отобразить формулу.
Включить или отключить M Intellisense
-
Выберите Параметры> файла и Параметры > параметры запроса .
-
В левой области в области GLOBALвыберите Редактор Power Query.
-
В области справа в области Формула выберитеили отберите включить M Intellisenseв панели формул, в расширенный редактор и в диалоговом окке настраиваемого столбца .
Примечание Изменение этого параметра вступает в силу при следующем переходе в окно редактора Power Query.
См. также
Справка по Power Query для Excel
Создание и вызов настраиваемой функции
Использование списка Примененные шаги (docs.com)
Использование пользовательских функций (docs.com)
Формулы Power Query M (docs.com)
Работа с ошибками (docs.com)
Нужна дополнительная помощь?
Суть запроса на выборку – выбрать из исходной таблицы строки, удовлетворяющие определенным критериям (подобно применению стандартного
Фильтра
). Произведем отбор значений из исходной таблицы с помощью
формул массива
. В отличие от применения
Фильтра
(
CTRL+SHIFT+L
или Данные/ Сортировка и фильтр/ Фильтр ) отобранные строки будут помещены в отдельную таблицу.
В этой статье рассмотрим наиболее часто встречающиеся запросы, например: отбор строк таблицы, у которых значение из числового столбца попадает в заданный диапазон (интервал); отбор строк, у которых дата принаждежит определенному периоду; задачи с 2-мя текстовыми критериями и другие. Начнем с простых запросов.
1. Один числовой критерий (Выбрать те Товары, у которых цена выше минимальной)
Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист
Один критерий — число
).
Необходимо отобразить в отдельной таблице только те записи (строки) из Исходной таблицы, у которых цена выше 25.
Решить эту и последующие задачи можно легко с помощью
стандартного фильтра
. Для этого выделите заголовки Исходной таблицы и нажмите
CTRL+SHIFT+L
. Через выпадающий список у заголовка Цены выберите
Числовые фильтры…
, затем задайте необходимые условия фильтрации и нажмите ОК.
Будут отображены записи удовлетворяющие условиям отбора.
Другим подходом является использование
формул массива
. В отличие от
фильтра
отобранные строки будут помещены в отдельную таблицу — своеобразный
Отчет
, который, например, можно отформатировать в стиль отличный от Исходной таблицы или производить другие ее модификации.
Критерий (минимальную цену) разместим в ячейке
Е6
, таблицу для отфильтрованных данных — в диапазоне
D10:E19
.
Теперь выделим диапазон
D11:D19
(столбец Товар) и в
Строке формул
введем
формулу массива
:
=ИНДЕКС(A11:A19;НАИМЕНЬШИЙ(ЕСЛИ($E$6<=B11:B19;СТРОКА(B11:B19);»»);СТРОКА()-СТРОКА($B$10))-СТРОКА($B$10))
Вместо
ENTER
нажмите сочетание клавиш
CTRL+SHIFT+ENTER
(формула массива будет
возвращать несколько значений
).
Те же манипуляции произведем с диапазоном
E11:E19
(столбец Цена) куда и введем аналогичную
формулу массива
:
=ИНДЕКС(B11:B19;НАИМЕНЬШИЙ(ЕСЛИ($E$6<=B11:B19;СТРОКА(B11:B19);»»);СТРОКА()-СТРОКА($B$10))-СТРОКА($B$10))
В результате получим новую таблицу, которая будет содержать только товары, у которых цены не меньше, указанной в ячейке
Е6
.
Чтобы показать динамизм полученного Запроса на выборку, введем в
Е6
значение 55. В новую таблицу попадет только 2 записи.
Если в Исходную таблицу добавить новый товар с Ценой 80, то в новую таблицу автоматически будет добавлена новая запись.
Примечание
. Также для вывода отфильтрованных данных можно использовать
Расширенный фильтр
и
Сводные таблицы
. Выбор конкретного инструмента зависит от стоящей перед пользователем задачи.
Если Вам не удобно использовать
формулу массива
, которая возвращает несколько значений, то можно использовать другой подход, который рассмотрен в разделах ниже: 5.а, 7, 10 и 11. В этих случаях используются
формулы массива, возвращающие одно значение
.
2. Два числовых критерия (Выбрать те Товары, у которых цена попадает в диапазон)
Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист
Диапазон Чисел
).
Критерии (нижнюю и верхнюю границы цены) разместим в диапазоне
Е5:Е6
.
Т.е. если Цена Товара попадает в указанный интервал, то такая запись появится в новой таблице Отфильтрованные данные.
В отличие от предыдущей задачи создадим два
Динамических диапазона
: Товары и Цены (без них можно обойтись, но они удобны при написании формул). Соответствующие формулы должны выглядеть в Диспетчере имен ( Формулы/ Определенные имена/ Диспетчер имен ) следующим образом (см. рисунок ниже).
Теперь выделим диапазон
D11:D19
и в
Строке формул
введем
формулу массива
:
=ИНДЕКС(Товары;НАИМЕНЬШИЙ(ЕСЛИ(($E$5<=Цены)*($E$6>=Цены);СТРОКА(Цены);»»);СТРОКА(Цены)-СТРОКА($B$10))-СТРОКА($B$10))
Вместо
ENTER
нажмите сочетание клавиш
CTRL+SHIFT+ENTER
.
Те же манипуляции произведем с диапазоном
E11:E19
куда и введем аналогичную
формулу массива
:
=ИНДЕКС(Цены;НАИМЕНЬШИЙ(ЕСЛИ(($E$5<=Цены)*($E$6>=Цены);СТРОКА(Цены);»»);СТРОКА(Цены)-СТРОКА($B$10))-СТРОКА($B$10))
В результате получим новую таблицу, которая будет содержать только товары, у которых цены попадают в интервал, указанный в ячейках
Е5
и
Е6
.
Чтобы показать динамизм полученного Отчета (Запроса на выборку) введем в
Е6
значение 65. В новую таблицу будет добавлена еще одна запись из Исходной таблицы, удовлетворяющая новому критерию.
Если в Исходную таблицу добавить новый товар с Ценой в диапазоне от 25 до 65, то в новую таблицу будет добавлена новая запись.
В файле примера также содержатся формулы массива с обработкой ошибок, когда в столбце Цена содержится значение ошибки, например #ДЕЛ/0! (см. лист
Обработка ошибок
).
Следующие задачи решаются аналогичным образом, поэтому не будем их рассматривать так детально.
3. Один критерий Дата (Выбрать те Товары, у которых Дата поставки совпадает заданной)
Пусть имеется Исходная таблица с перечнем Товаров и Датами поставки (см. файл примера, лист
Один критерий — Дата
).
Для отбора строк используются формулы массива, аналогичные Задаче1 (вместо критерия <= используется =):
= ИНДЕКС(A12:A20;НАИМЕНЬШИЙ(ЕСЛИ($E$6=B12:B20;СТРОКА(B12:B20);»»);СТРОКА(B12:B20)-СТРОКА($B$11))-СТРОКА($B$11))
=ИНДЕКС(B12:B20;НАИМЕНЬШИЙ(ЕСЛИ($E$6=B12:B20;СТРОКА(B12:B20);»»);СТРОКА(B12:B20)-СТРОКА($B$11))-СТРОКА($B$11))
4. Два критерия Дата (Выбрать те Товары, у которых Дата поставки попадает в диапазон)
Пусть имеется Исходная таблица с перечнем Товаров и Датами поставки (см. файл примера, лист
Диапазон Дат
).
Обратите внимание, что столбец Дат НЕ СОРТИРОВАН.
Решение1
: Для отбора строк можно использовать
формулы массива, возвращающие одно значение
.
Введите в ячейку
D12
формулу массива:
=ИНДЕКС(A$12:A$20;НАИБОЛЬШИЙ(($E$6<=$B$12:$B$20)*($E$7>=$B$12:$B$20)*(СТРОКА($B$12:$B$20)-СТРОКА($B$11));$J$12-СТРОКА(A12)+СТРОКА($B$11)+1))
Примечание
: После ввода формулы вместо клавиши ENTER (ВВОД) нужно нажать сочетание клавиш CTRL+SHIFT+ENTER. Это сочетание клавиш используется для ввода формул массива.
Скопируйте формулу массива вниз на нужное количество ячеек. Формула вернет только те значения Товаров, которые были поставлены в диапазоне указанных дат. В остальных ячейках будут содержаться ошибки #ЧИСЛО! Ошибки в файле примера (Лист 4.Диапазон Дат)
скрыты с помощью Условного форматирования
.
Аналогичную формулу нужно ввести и для дат в столбец E.
В ячейке
J12
вычислено количество строк исходной таблицы, удовлетворяющих критериям:
=СЧЁТЕСЛИМН(B12:B20;»>=»&$E$6;B12:B20;»<=»&$E$7)
Строки исходной таблицы, которые удовлетворяют критериям,
выделены также Условным форматированием
.
Решение2
: Для отбора строк можно использовать формулы массива, аналогичные Задаче2 (т.е.
формулы массива, возвращающие несколько значений
):
= ИНДЕКС(A12:A20;НАИМЕНЬШИЙ(ЕСЛИ(($E$6<=B12:B20)*($E$7>=B12:B20);СТРОКА(B12:B20);»»);СТРОКА(B12:B20)-СТРОКА($B$11))-СТРОКА($B$11))
=ИНДЕКС(B12:B20;НАИМЕНЬШИЙ(ЕСЛИ(($E$6<=B12:B20)*($E$7>=B12:B20);СТРОКА(B12:B20);»»);СТРОКА(B12:B20)-СТРОКА($B$11))-СТРОКА($B$11))
Для ввода первой формулы выделите диапазон ячеек
G12:G20
. После ввода формулы вместо клавиши ENTER (ВВОД) нужно нажать сочетание клавиш CTRL+SHIFT+ENTER.
Решение3
: Если столбец Дат СОРТИРОВАН, то можно не использовать формулы массива.
Сначала необходимо вычислить первую и последнюю позиции строк, которые удовлетворяют критериям. Затем вывести строки
с помощью функции СМЕЩ()
.
Этот пример еще раз наглядно демонстрирует насколько
предварительная сортировка данных
облегчает написание формул.
5. Один критерий Дата (Выбрать те Товары, у которых Дата поставки не раньше/ не позже заданной)
Пусть имеется Исходная таблица с перечнем Товаров и Датами поставки (см. файл примера, лист
Один критерий — Дата (не позже)
).
Для отбора строк, дата которых не раньше (включая саму дату), используется формула массива:
= ИНДЕКС(A12:A20;НАИМЕНЬШИЙ(ЕСЛИ($E$7<=B12:B20;СТРОКА(B12:B20);»»);СТРОКА(B12:B20)-СТРОКА($B$11))-СТРОКА($B$11))
Также в файле примера приведены формулы для условий: Не раньше (не включая); Не позже (включая); Не позже (не включая).
Эта формула введена как
формула массив
а, возвращающая множество значений (см. здесь
Формулы массива в MS EXCEL, возвращающие несколько значений
). Эту формулу можно переделать, чтобы
возвращалось только 1 значение
, см. следующую задачу 5а.
5а. Один критерий Дата (Выбрать События, которые Закончились/ не начались/ происходят на заданную дату)
Пусть имеется перечень событий и даты их начала и завершения.
Пользователю требуется найти и вывести в отдельную таблицу события, которые либо уже закончились на заданную дату, либо еще длятся, либо еще не начались.
Т.е. нам потребуется формула, обрабатывающая 3 вышеуказанные ситуации. Можно использовать нижеуказанную формулу, которую нужно ввести в строке для каждого события
= ВЫБОР($C$6;$B$7>C15;И($B$7>=B15;$B$7<=C15);$B$7
Формула возвращает ЛОЖЬ или ИСТИНА в зависимости от того удовлетворят ли Событие указанным критерием. Результат этой формулы мы будем использовать как для
Условного форматирования
, чтобы выделить События, так и для вывода Событий в отдельный диапазон.
Для вывода Событий в соседний диапазон используйте формулу:
= ИНДЕКС(A$15:A$21;НАИМЕНЬШИЙ(ЕСЛИ($D$15:$D$21;СТРОКА(A$15:A$21);»»);СТРОКА()-СТРОКА($B$14))-СТРОКА($B$14))
Формула делает следующее:
— если Событие удовлетворяет условию, то формула запоминает номер строки этого События: ЕСЛИ($D$15:$D$21;СТРОКА(A$15:A$21);»»)
—
Функция НАИМЕНЬШИЙ()
сортирует
полученный массив номеров строк: первыми идут номера строк Событий, которые удовлетворяют критерию;
—
Функция ИНДЕКС()
выводит названия Событий из указанный строк.
6. Два критерия: Дата и Текст (Выбрать Товары определенного вида, у которых Дата поставки не позже заданной)
Пусть имеется Исходная таблица с перечнем Товаров и Датами поставки (см. файл примера, лист
2 критерия — Дата-Текст
).
В отличие от Задачи 5 будем отбирать строки только того Товара, который указан в критерии. Список дат должен быть
отсортирован
(для каждого из товаров), по товару сортировка не требуется.
Для отбора строк, дата которых не позже (включая саму дату), используется формула массива:
= ИНДЕКС(A13:A21; НАИМЕНЬШИЙ(ЕСЛИ(($E$7=$A$13:$A$21)*($E$8>=$B$13:$B$21)*($B$13:$B$21>0);СТРОКА($B$13:$B$21);»»);СТРОКА($B$13:$B$21)-СТРОКА($B$12)) -СТРОКА($B$12))
Условие $E$7=$A$13:$A$21 гарантирует, что будут отобраны товары только определенного типа. Условие $E$8>=$B$13:$B$21 гарантирует, что будут отобраны даты не позже заданной (включая). Условие $B$13:$B$21>0 необходимо, если в диапазоне дат имеются пустые ячейки. Знак * (умножение) используется для задания
Условия И
(все 3 критерия должны выполняться для строки одновременно).
Примечание
. Случай, когда список несортирован, рассмотрен в статье
Поиск ДАТЫ (ЧИСЛА) ближайшей к заданной, с условием в MS EXCEL. Несортированный список
.
7. Один Текстовый критерий (Выбрать Товары определенного вида)
Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист
Один критерий — Текст
).
Задача решается аналогично Задачам 1 и 3. Более подробное решение см. в статье
Поиск ТЕКСТовых значений в MS EXCEL с выводом их в отдельный список. Часть1. Обычный поиск
.
8. Два Текстовых критерия (Выбрать Товары определенного вида, поставленные в заданный месяц)
Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист
2 критерия — текст (И)
).
Для отбора строк используется формула массива:
= ИНДЕКС($A$11:$A$19; НАИМЕНЬШИЙ(ЕСЛИ(($F$6=$A$11:$A$19)*($F$7=$B$11:$B$19);СТРОКА($A$11:$A$19)-СТРОКА($A$10);30);СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК($A$11:$A$19)))))
Выражение ($F$6=$A$11:$A$19)*($F$7=$B$11:$B$19) задает оба условия (Товар и Месяц).
Выражение СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК($A$11:$A$19))) формирует
массив последовательных чисел
{1:2:3:4:5:6:7:8:9}, т.е. номера строк в таблице.
9. Два Текстовых критерия (Выбрать Товары определенных видов)
Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист
2 критерия — текст (ИЛИ)
).
В отличие от Задачи 7 отберем строки с товарами 2-х видов (
Условие ИЛИ
).
Для отбора строк используется формула массива:
= ИНДЕКС(A$11:A$19; НАИБОЛЬШИЙ((($E$6=$A$11:$A$19)+($E$7=$A$11:$A$19))*(СТРОКА($A$11:$A$19)-СТРОКА($A$10)); СЧЁТЕСЛИ($A$11:$A$19;$E$6)+СЧЁТЕСЛИ($A$11:$A$19;$E$7)-ЧСТРОК($A$11:A11)+1))
Условие ($E$6=$A$11:$A$19)+($E$7=$A$11:$A$19) гарантирует, что будут отобраны товары только заданных видов из желтых ячеек (Товар2 и Товар3). Знак + (сложение) используется для задания
Условие ИЛИ
(должен быть выполнен хотя бы 1 критерий).
Вышеуказанное выражение вернет массив {0:0:0:0:1:1:1:0:0}. Умножив его на выражение СТРОКА($A$11:$A$19)-СТРОКА($A$10) , т.е. на
массив последовательных чисел
{1:2:3:4:5:6:7:8:9}, получим массив позиций (номеров строк таблицы), удовлетворяющих критериям. В нашем случае это будет массив {0:0:0:0:5:6:7:0:0}.
С помощью функции НАИБОЛЬШИЙ() выведем 3 значения из позиции 5 (строка 15 листа), 6 (16) и 7 (17), т.е. значения Товар2, Товар2 и Товар3. Для этого используем выражение СЧЁТЕСЛИ($A$11:$A$19;$E$6)+СЧЁТЕСЛИ($A$11:$A$19;$E$7)-ЧСТРОК($A$11:A11)+1 , которое последовательно (начиная со строки 11) будет возвращать числа 3; 2; 1; 0; -1; -2; … Формула НАИБОЛЬШИЙ(…;3) вернет число 5, НАИБОЛЬШИЙ(…;2) вернет число 6, НАИБОЛЬШИЙ(…;1) вернет число 7, а НАИБОЛЬШИЙ(…;0) и далее вернет ошибку, которую мы скроем
условным форматированием
.
И наконец, с помощью
функции ИНДЕКС()
последовательно выведем наши значения из соответствующих позиций: = ИНДЕКС(A$11:A$19;5) вернет Товар2, = ИНДЕКС(A$11:A$19;6) вернет Товар2, = ИНДЕКС(A$11:A$19;7) вернет Товар3.
10. Отбор значений с учетом повторов
В разделе
Отбор на основании повторяемости
собраны статьи о запросах с группировкой данных. Из повторяющихся данных сначала отбираются уникальные значения, а соответствующие им значения в других столбцах — группируются (складываются, усредняются и пр.).
Наиболее популярные статьи из этого раздела:
Отбор уникальных значений (убираем повторы из списка) в MS EXCEL
Отбор уникальных значений с суммированием по соседнему столбцу в MS EXCEL
Отбор повторяющихся значений в MS EXCEL
Отбор уникальных значений из двух диапазонов в MS EXCEL
Отбор уникальных СТРОК с помощью Расширенного фильтра в MS EXCEL
В качестве примера приведем решения следующей задачи:
Выбрать Товары, цена которых лежит в определенном диапазоне и повторяется заданное количество раз или более.
В качестве исходной возьмем таблицу партий товаров.
Предположим, что нас интересует сколько и каких партий товаров поставлялось по цене от 1000р. до 2000р. (критерий 1). Причем, партий с одинаковой ценой должно быть минимум 3 (критерий 2).
Решением является формула массива:
=НАИМЕНЬШИЙ(СТРОКА($A$14:$A$27)*($C$14:$C$27>=$B$7)*($C$14:$C$27<=$C$7)*($D$14:$D$27>=$B$10);F14+($G$8-$G$9))
Эта формула возвращает номера строк, которые удовлетворяют обоим критериям.
Формула =СУММПРОИЗВ(($C$14:$C$27>=$B$7)*($C$14:$C$27<=$C$7)*($D$14:$D$27>=$B$10)) подсчитывает количество строк, которые удовлетворяют критериям.
В файле примера на листе «10.Критерий — колич-во повторов» настроено
Условное форматирование
, которое позволяет визуально определить строки удовлетворяющие критериям, а также
скрыть ячейки, в которых формула массива возвращает ошибку #ЧИСЛО!
11. Используем значение критерия (Любой) или (Все)
В фильтре
Сводных таблиц
MS EXCEL используется значение (Все), чтобы вывести все значения столбца. Другими словами, в
выпадающем списке
значений критерия содержится особое значение, которое отменяет сам критерий (см. статью
Отчеты в MS EXCEL
, Отчет №3).
В файле примера на листе «11. Критерий Любой или (Все)» реализован данный вариант критерия.
Формула в этом случае должна содержать функцию ЕСЛИ() . Если выбрано значение (Все), то используется формула для вывода значений без учета данного критерия. Если выбрано любое другое значение, то критерий работает обычным образом.
=ЕСЛИ($C$8=»(Все)»;НАИМЕНЬШИЙ((СТРОКА($B$13:$B$26)-СТРОКА($B$12))*($D$13:$D$26>=$D$8);F13+($G$6-$G$7));НАИМЕНЬШИЙ((СТРОКА($B$13:$B$26)-СТРОКА($B$12))*($D$13:$D$26>=$D$8)*($C$13:$C$26=$C$8);F13+($G$6-$G$7)))
Остальная часть формулы аналогична рассмотренным выше.
12. Актуальная цена
Пусть для товара ежедневно заполняется таблица цен (цена может меняться, но не каждый день). Нужно найти актуальнуй цену, т.е. цену на последнюю дату. Если товар всего один, то можно отсортировать по дате и в последней строке будет нужная актуальная цена. Если товаров много, то нужно сначала выбрать Автофильтром нужный товар, затем опять отсортировать по цене.
Чтобы иметь перечень товаров с актуальными ценами придется использовать формулы:
1) сначала сформируем перечень товаров без повторов
Отбор уникальных значений (убираем повторы из списка) в MS EXCEL
2) определяем последнюю (максимальную) дату для каждого товара с помощью формулы массива =МАКС((Таблица1[товар]=E8)*Таблица1[дата])
3) наконец, выводим актуальную цену =СУММЕСЛИМН(Таблица1[цена];Таблица1[товар];E8;Таблица1[дата];F8)
Для товара не должно быть повторов дат, иначе цены будут суммироваться (если повторяется последняя дата).
В файле примера приведено решение на листе 12. Актуальная цена.
Самый быстрый ВПР
Если в ваших таблицах всего лишь несколько десятков строк, то, скорее всего, эта статья не будет для вас актуальной. На таких небольших объемах данных любой способ будет работать достаточно шустро, чтобы вы этого не замечали. Если же число строк в ваших списках измеряется тысячами, да и самих таблиц не одна-две, то время мучительного ожидания на пересчете формул в 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, который тоже может решить нашу задачу. Кто-то скажет, что некорректно сравнивать пересчёт формул с механизмом обновления запроса, но мне, откровенно говоря, просто самому было интересно — кто быстрее?
- Превращаем обе наши таблицы в «умные» с помощью команды Форматировать как таблицу на вкладке Главная (Home — Format as Table) или с помощью сочетания клавиш Ctrl + T .
- По очереди загружаем таблицы в Power Query с помощью команды Данные — Из таблицы / диапазона (Data — From Table/Range) .
- После загрузки в Power Query возвращаемся обратно в Excel, оставляя загруженные данные как подключение. Для этого в окне Power Query выбираем Главная — Закрыть и загрузить — Закрыть и загрузить в. — Только создать подключение (Home — Close&Load — Close&Load to. — Only create connection) .
- После того, как обе исходные таблицы будут загружены как подключения, создадим ещё один, третий запрос, который будет объединять их между собой, подставляя цены из прайса в отгрузки. Для этого на вкладке Данные выберем Получить данные / Создать запрос — Объединить запросы — Объединить (Get Data / New Query — Merge queries — Merge) :
В отличие от формул, запросы Power Query не обновляются автоматически «на лету», а требуют щелчка правой кнопкой мыши по таблице (или запросу в правой панели) и выбору команды Обновить (Refresh) . Также можно воспользоваться командой Обновить все (Refresh All) на вкладке Данные (Data) .
Время обновления = 8,2 сек.
Итоговая таблица и выводы
Если вы честно дочитали до этого места, то какие-то выводы, наверное, уже сделали самостоятельно. Если же пропустили все детали и сразу перешли к итогам, то вот вам общая результирующая таблица по скорости всех методов:
Само-собой, у каждого из нас свои предпочтения, задачи и тараканы, но для себя я сформулировал выводы после этого тестирования так:
ВПР с несколькими условиями: 5 примеров.
Очень часто наши требования к поиску данных не ограничиваются одним условием. К примеру, нам нужна выручка по магазину за определенный месяц, количество конкретного товара, проданного определенному покупателю и т.д. Обычными средствами функции ВПР эту задачу решить сложно и даже не всегда возможно. Ведь там предусмотрено использование только одного критерия поиска.
Мы предложим вам несколько вариантов решения проблемы поиска по нескольким условиям.
ВПР по нескольким условиям с использованием дополнительного столбца.
Задачу, рассмотренную в предыдущем примере, можно решить и другим способом – без использования формулы массива. Ведь работа с массивами многим представляется сложной и недоступной для понимания. Дополнительный столбец для поиска по нескольким условиям будет в определенном отношении более простым вариантом.
Итак, необходимо выбрать значение выручки за определенный месяц, год и по нужному магазину. В итоге имеем 3 условия отбора.
Сразу по трем столбцам функция ВПР искать не может. Поэтому нам нужно объединить их в один. И, поскольку поиск производится всегда в крайнем левом (первом) столбце, то нужно добавить его в нашу таблицу тоже слева.
Вставляем перед таблицей с данными дополнительный столбец A. Затем при помощи оператора & объединяем в нем содержимое B,C и D. Записываем в А7
и копируем в находящиеся ниже ячейки.
Формула поиска в D4 будет выглядеть:
В диапазон поиска включаем и наш дополнительный столбец. Критерий поиска – также объединение 3 значений. И извлекаем результат из 5 колонки.
Все работает, однако вид несколько портит дополнительный столбец. В крайнем случае, его можно скрыть, используя контекстное меню по нажатию правой кнопки мыши.
Вид станет приятнее, а на результаты это никак не повлияет.
ВПР по двум условиям при помощи формулы массива.
У нас есть таблица, в которой записана выручка по каждому магазину за день. Мы хотим быстро найти сумму продаж по конкретному магазину за определенный день.
Для этого в верхней части нашего листа запишем критерии поиска: дата и магазин. В ячейке B3 будем выводить сумму выручки.
Формула в B3 выглядит следующим образом:
Обратите внимание на фигурные скобки, которые означают, что это формула массива. То есть наша функция ВПР работает не с отдельными значениями, а разу с массивами данных.
Разберем процесс подробно.
Мы ищем дату, записанную в ячейке B1. Но вот только разыскивать мы ее будем не в нашем исходном диапазоне данных, а в немного видоизмененном. Для этого используем условие
То есть, в том случае, если наименование магазина совпадает с критерием в ячейке B2, мы оставляем исходные значения из нашего диапазона. А если нет – заменяем их на пробелы. И так по каждой строке.
В результате получим вот такой виртуальный массив данных на основе нашей исходной таблицы:
Как видите, строки, в которых ранее был «Магазин 1», заменены на пустые. И теперь искать нужную дату мы будем только среди информации по «Магазин 2». И извлекать значения выручки из третьей колонки.
С такой работой функция ВПР вполне справится.
Такой ход стал возможен путем применения формулы массива. Поэтому обратите особое внимание: круглые скобки в формуле писать руками не нужно! В ячейке B3 вы записываете формулу
И затем нажимаете комбинацию клавиш CTRL+Shift+Enter. При этом Excel поймет, что вы хотите ввести формулу массива и сам подставит скобки.
Таким образом, функция ВПР поиск по двум столбцам производит в 2 этапа: сначала мы очищаем диапазон данных от строк, не соответствующих одному из условий, при помощи функции ЕСЛИ и формулы массива. А затем уже в этой откорректированной информации производим обычный поиск по одному только второму критерию при помощи ВПР.
Чтобы упростить работу в будущем и застраховать себя от возможных ошибок при добавлении новой информации о продажах, мы рекомендуем использовать «умную» таблицу. Она автоматически подстроит свой размер с учетом добавленных строк, и никакие ссылки в формулах не нужно будет менять.
Вот как это будет выглядеть.
ВПР по нескольким критериям с применением массивов — способ 2.
Выше мы уже рассматривали, как при помощи формулы массива можно организовать поиск ВПР с несколькими условиями. Предлагаем еще один способ.
Условия возьмем те же, что и в предыдущем примере.
Формулу в С4 введем такую:
Естественно, не забываем нажать CTRL+Shift+Enter.
Теперь давайте пошагово разберем, как это работает.
Наше задача здесь – также создать дополнительный столбец для работы функции ВПР. Только теперь мы создаем его не на листе рабочей книги Excel, а виртуально.
Как и в предыдущем примере, мы ищем текст из объединенных в одно целое условий поиска.
Далее определяем данные, среди которых будем искать.
Конструкция вида A7:A20&B7:B20&C7:C20;D7:D20 создает 2 элемента. Первый – это объединение колонок A, B и C из исходных данных. Если помните, то же самое мы делали в нашем дополнительном столбце. Второй D7:D20 – это значения, одно из которых нужно в итоге выбрать.
Функция ВЫБОР позволяет из этих элементов создать массив. как раз и означает, что нужно взять сначала первый элемент, затем второй, и объединить их в виртуальную таблицу – массив.
В первой колонке этой виртуальной таблицы мы будем искать, а из второй – извлекать результат.
Таким образом, для работы функции ВПР с несколькими условиями мы вновь используем дополнительный столбец. Только создаем его не реально, а виртуально.
Двойной ВПР при помощи ИНДЕКС + ПОИСКПОЗ
Далее речь у нас пойдет уже не о функции ВПР, но задачу мы будем решать ту же самую. В качестве критерия поиска нам опять нужно использовать несколько условий.
Формула в С4 теперь выглядит так:
И не забываем при вводе нажать CTRL+Shift+Enter! Это формула массива.
Теперь давайте разбираться, как это работает.
Функция ИНДЕКС в нашем случае позволяет извлечь элемент из списка по его порядковому номеру. Список – это диапазон D7:D20, где записаны суммы выручки. А вот порядковый номер, который нужно извлечь, мы определяем при помощи ПОИСКПОЗ.
Синтаксис здесь следующий:
ПОИСКПОЗ(что_ищем; где_ищем; тип_поиска)
Тип поиска ставим 0, то есть точное совпадение. В нашем случае мы будем искать 1. Далее мы определим массив, в котором будем работать.
Выражение (A7:A20=C1)*(B7:B20=C2)*(C7:C20=C3) позволит создать виртуальную таблицу примерно такого вида:
Как видите, первоначально мы последовательно сравниваем каждое значение с нашим критерием отбора. В столбце А у нас записаны месяцы – сравниваем их с месяцем-критерием из ячейки C1. В случае совпадения получаем ИСТИНА, иначе – ЛОЖЬ. Аналогично последовательно проверяем год и название магазина. А затем просто перемножаем значения. Поскольку логические переменные для Excel – это либо 0, либо 1, то произведение их может быть равно 1 только в том случае, если мы имеем по каждой колонке ИСТИНА (то есть,1). Во всех остальных случаях получаем 0.
Убеждаемся, что цифра 1 встречается только единожды.
При помощи ПОИСКПОЗ определяем, на какой позиции она находится. На какой позиции находится 1, на той же позиции находится в массиве и искомая сумма выручки. В нашем случае это 10-я.
Далее при помощи ИНДЕКС извлекаем 10-ю по счету выручку.
Таким образом мы выбрали значение по нескольким условиям без использования функции ВПР.
Достойная замена – функция СУММПРОИЗВ.
У нас есть данные о продажах нескольких менеджеров в различных регионах. Нужно сделать выборку по дате, менеджеру и региону.
Работает как формула массива, хотя по факту таковой не является. В этом заключается замечательное свойство функции СУММПРОИЗВ, о которой мы еще много будем говорить в других статьях.
Последовательно по каждой строке диапазона от 2-й до 27-й она проверяет совпадение каждого соответствующего значения с критерием поиска. Эти результаты перемножаются между собой и в итоге еще умножаются на сумму выручки. Если среди трех условий будет хотя бы одно несовпадение, то итогом будет 0. В случае совпадения сумма выручки трижды умножится на 1.
Затем все эти 27 произведений складываются, и результатом будет выручка нужного менеджера в каком-то регионе за определенную дату.
В качестве бонуса можно продолжить этот пример и рассчитать общую сумму продаж менеджера в определенном регионе.
Для этого из формулы просто уберем сравнение по дате.
Кстати, возможен и другой вариант расчета с этой же функцией:
Итак, мы рассмотрели примеры использования функции ВПР с двумя и с несколькими условиями. А также обнаружили, что этой ценной функции есть замечательная альтернатива.
Примеры использования функции ВПР:
Как объединить две или несколько таблиц в Excel — В этом руководстве вы найдете некоторые приемы объединения таблиц Excel путем сопоставления данных в одном или нескольких столбцах. Как часто при анализе в Excel вся необходимая информация собирается на одном…
2 способа извлечь данные из разных таблиц при помощи ВПР. — Задача: Данные, которые нужно найти и извлечь при помощи функции ВПР, находятся в нескольких таблицах. Эти таблицы имеют одинаковую структуру (то есть, одни и те же столбцы, расположенные в одном…
/> Вычисление номера столбца для извлечения данных в ВПР — Задача: Наиболее простым способом научиться указывать тот столбец, из которого функция ВПР будет извлекать данные. При этом мы не будем изменять саму формулу, поскольку это может привести в случайным ошибкам.…
4 способа, как сделать левый ВПР в Excel. — Функция ВПР – одна из самых популярных, когда нужно найти и извлечь из таблицы какие-либо данные. Но при этом она имеет один существенный недостаток. Поиск она производит в крайнем левом…
Формула ВПР в Excel для сравнения двух таблиц — 4 способа — Сравнение таблиц – это задача, которую в Excel приходится довольно часто решать. Например, у нас есть старый прайс-лист и его новая версия. Нужно просмотреть, цены на какие товары изменились и…
Почему не работает ВПР в Excel? — Функция ВПР – это очень мощный инструмент поиска. Но если он по каким-то причинам завершился неудачно, то вы получите сообщение об ошибке #Н/Д (#N/A в английском варианте). Давайте постараемся вместе…
Функция ВПР в Excel: пошаговая инструкция с 5 примерами — ВПР — это функция Excel для поиска и извлечения данных из определенного столбца в таблице. Она поддерживает приблизительное и точное сопоставление, а также подстановочные знаки (* и ?). Значения поиска…
Формула ВПР в Excel — 22 факта, которые нужно знать. — В процессе работы в Excel часто возникает задача извлечения нужных данных из рабочих таблиц. Для этой цели в Excel предусмотрена формула ВПР (VLOOKUP в английском варианте). И хотя ВПР относительно…
Суть запроса на выборку – выбрать из исходной таблицы строки, удовлетворяющие определенным критериям (подобно применению стандартного Фильтра ). Произведем отбор значений из исходной таблицы с помощью формул массива . В отличие от применения Фильтра ( CTRL+SHIFT+L или Данные/ Сортировка и фильтр/ Фильтр ) отобранные строки будут помещены в отдельную таблицу.
В этой статье рассмотрим наиболее часто встречающиеся запросы, например: отбор строк таблицы, у которых значение из числового столбца попадает в заданный диапазон (интервал); отбор строк, у которых дата принаждежит определенному периоду; задачи с 2-мя текстовыми критериями и другие. Начнем с простых запросов.
1. Один числовой критерий (Выбрать те Товары, у которых цена выше минимальной)
Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист Один критерий — число ).
Необходимо отобразить в отдельной таблице только те записи (строки) из Исходной таблицы, у которых цена выше 25.
Решить эту и последующие задачи можно легко с помощью стандартного фильтра . Для этого выделите заголовки Исходной таблицы и нажмите CTRL+SHIFT+L . Через выпадающий список у заголовка Цены выберите Числовые фильтры. , затем задайте необходимые условия фильтрации и нажмите ОК.
Будут отображены записи удовлетворяющие условиям отбора.
Другим подходом является использование формул массива . В отличие от фильтра отобранные строки будут помещены в отдельную таблицу — своеобразный Отчет , который, например, можно отформатировать в стиль отличный от Исходной таблицы или производить другие ее модификации.
Критерий (минимальную цену) разместим в ячейке Е6 , таблицу для отфильтрованных данных — в диапазоне D10:E19 .
Теперь выделим диапазон D11:D19 (столбец Товар) и в Строке формул введем формулу массива :
Вместо ENTER нажмите сочетание клавиш CTRL+SHIFT+ENTER .
Те же манипуляции произведем с диапазоном E11:E19 куда и введем аналогичную формулу массива :
В результате получим новую таблицу, которая будет содержать только товары, у которых цены попадают в интервал, указанный в ячейках Е5 и Е6 .
Чтобы показать динамизм полученного Отчета (Запроса на выборку) введем в Е6 значение 65. В новую таблицу будет добавлена еще одна запись из Исходной таблицы, удовлетворяющая новому критерию.
Если в Исходную таблицу добавить новый товар с Ценой в диапазоне от 25 до 65, то в новую таблицу будет добавлена новая запись.
В файле примера также содержатся формулы массива с обработкой ошибок, когда в столбце Цена содержится значение ошибки, например #ДЕЛ/0! (см. лист Обработка ошибок ).
Следующие задачи решаются аналогичным образом, поэтому не будем их рассматривать так детально.
3. Один критерий Дата (Выбрать те Товары, у которых Дата поставки совпадает заданной)
Пусть имеется Исходная таблица с перечнем Товаров и Датами поставки (см. файл примера, лист Один критерий — Дата ).
Для отбора строк используются формулы массива, аналогичные Задаче1 (вместо критерия =$B$12:$B$20)*(СТРОКА($B$12:$B$20)-СТРОКА($B$11));$J$12-СТРОКА(A12)+СТРОКА($B$11)+1))
Примечание : После ввода формулы вместо клавиши ENTER (ВВОД) нужно нажать сочетание клавиш CTRL+SHIFT+ENTER. Это сочетание клавиш используется для ввода формул массива.
Скопируйте формулу массива вниз на нужное количество ячеек. Формула вернет только те значения Товаров, которые были поставлены в диапазоне указанных дат. В остальных ячейках будут содержаться ошибки #ЧИСЛО! Ошибки в файле примера (Лист 4.Диапазон Дат) скрыты с помощью Условного форматирования .
Аналогичную формулу нужно ввести и для дат в столбец E.
В ячейке J12 вычислено количество строк исходной таблицы, удовлетворяющих критериям:
Решение2 : Для отбора строк можно использовать формулы массива, аналогичные Задаче2 (т.е. формулы массива, возвращающие несколько значений ):
Для ввода первой формулы выделите диапазон ячеек G12:G20 . После ввода формулы вместо клавиши ENTER (ВВОД) нужно нажать сочетание клавиш CTRL+SHIFT+ENTER.
Решение3 : Если столбец Дат СОРТИРОВАН, то можно не использовать формулы массива.
Сначала необходимо вычислить первую и последнюю позиции строк, которые удовлетворяют критериям. Затем вывести строки с помощью функции СМЕЩ() .
Этот пример еще раз наглядно демонстрирует насколько предварительная сортировка данных облегчает написание формул.
5. Один критерий Дата (Выбрать те Товары, у которых Дата поставки не раньше/ не позже заданной)
Пусть имеется Исходная таблица с перечнем Товаров и Датами поставки (см. файл примера, лист Один критерий — Дата (не позже) ).
Для отбора строк, дата которых не раньше (включая саму дату), используется формула массива:
= ИНДЕКС(A12:A20;НАИМЕНЬШИЙ(ЕСЛИ($E$7 C15;И($B$7>=B15;$B$7 =$B$13:$B$21)*($B$13:$B$21>0);СТРОКА($B$13:$B$21);»»);СТРОКА($B$13:$B$21)-СТРОКА($B$12)) -СТРОКА($B$12))
Условие $E$7=$A$13:$A$21 гарантирует, что будут отобраны товары только определенного типа. Условие $E$8>=$B$13:$B$21 гарантирует, что будут отобраны даты не позже заданной (включая). Условие $B$13:$B$21>0 необходимо, если в диапазоне дат имеются пустые ячейки. Знак * (умножение) используется для задания Условия И (все 3 критерия должны выполняться для строки одновременно).
Примечание . Случай, когда список несортирован, рассмотрен в статье Поиск ДАТЫ (ЧИСЛА) ближайшей к заданной, с условием в MS EXCEL. Несортированный список .
7. Один Текстовый критерий (Выбрать Товары определенного вида)
Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист Один критерий — Текст ).
Задача решается аналогично Задачам 1 и 3. Более подробное решение см. в статье Поиск ТЕКСТовых значений в MS EXCEL с выводом их в отдельный список. Часть1. Обычный поиск .
8. Два Текстовых критерия (Выбрать Товары определенного вида, поставленные в заданный месяц)
Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист 2 критерия — текст (И) ).
Для отбора строк используется формула массива:
Выражение ($F$6=$A$11:$A$19)*($F$7=$B$11:$B$19) задает оба условия (Товар и Месяц).
Выражение СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК($A$11:$A$19))) формирует массив последовательных чисел , т.е. номера строк в таблице.
9. Два Текстовых критерия (Выбрать Товары определенных видов)
Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист 2 критерия — текст (ИЛИ) ).
В отличие от Задачи 7 отберем строки с товарами 2-х видов ( Условие ИЛИ ).
Для отбора строк используется формула массива:
= ИНДЕКС(A$11:A$19; НАИБОЛЬШИЙ((($E$6=$A$11:$A$19)+($E$7=$A$11:$A$19))*(СТРОКА($A$11:$A$19)-СТРОКА($A$10)); СЧЁТЕСЛИ($A$11:$A$19;$E$6)+СЧЁТЕСЛИ($A$11:$A$19;$E$7)-ЧСТРОК($A$11:A11)+1))
Условие ($E$6=$A$11:$A$19)+($E$7=$A$11:$A$19) гарантирует, что будут отобраны товары только заданных видов из желтых ячеек (Товар2 и Товар3). Знак + (сложение) используется для задания Условие ИЛИ (должен быть выполнен хотя бы 1 критерий).
Вышеуказанное выражение вернет массив . Умножив его на выражение СТРОКА($A$11:$A$19)-СТРОКА($A$10) , т.е. на массив последовательных чисел , получим массив позиций (номеров строк таблицы), удовлетворяющих критериям. В нашем случае это будет массив .
С помощью функции НАИБОЛЬШИЙ() выведем 3 значения из позиции 5 (строка 15 листа), 6 (16) и 7 (17), т.е. значения Товар2, Товар2 и Товар3. Для этого используем выражение СЧЁТЕСЛИ($A$11:$A$19;$E$6)+СЧЁТЕСЛИ($A$11:$A$19;$E$7)-ЧСТРОК($A$11:A11)+1 , которое последовательно (начиная со строки 11) будет возвращать числа 3; 2; 1; 0; -1; -2; . Формула НАИБОЛЬШИЙ(. ;3) вернет число 5, НАИБОЛЬШИЙ(. ;2) вернет число 6, НАИБОЛЬШИЙ(. ;1) вернет число 7, а НАИБОЛЬШИЙ(. ;0) и далее вернет ошибку, которую мы скроем условным форматированием .
И наконец, с помощью функции ИНДЕКС() последовательно выведем наши значения из соответствующих позиций: = ИНДЕКС(A$11:A$19;5) вернет Товар2, = ИНДЕКС(A$11:A$19;6) вернет Товар2, = ИНДЕКС(A$11:A$19;7) вернет Товар3.
10. Отбор значений с учетом повторов
В разделе Отбор на основании повторяемости собраны статьи о запросах с группировкой данных. Из повторяющихся данных сначала отбираются уникальные значения, а соответствующие им значения в других столбцах — группируются (складываются, усредняются и пр.).
Наиболее популярные статьи из этого раздела:
В качестве примера приведем решения следующей задачи: Выбрать Товары, цена которых лежит в определенном диапазоне и повторяется заданное количество раз или более.
В качестве исходной возьмем таблицу партий товаров.
Предположим, что нас интересует сколько и каких партий товаров поставлялось по цене от 1000р. до 2000р. (критерий 1). Причем, партий с одинаковой ценой должно быть минимум 3 (критерий 2).
Решением является формула массива:
Эта формула возвращает номера строк, которые удовлетворяют обоим критериям.
Формула =СУММПРОИЗВ(($C$14:$C$27>=$B$7)*($C$14:$C$27 =$B$10)) подсчитывает количество строк, которые удовлетворяют критериям.
В файле примера на листе «10.Критерий — колич-во повторов» настроено Условное форматирование , которое позволяет визуально определить строки удовлетворяющие критериям, а также скрыть ячейки, в которых формула массива возвращает ошибку #ЧИСЛО!
11. Используем значение критерия (Любой) или (Все)
В фильтре Сводных таблиц MS EXCEL используется значение (Все), чтобы вывести все значения столбца. Другими словами, в выпадающем списке значений критерия содержится особое значение, которое отменяет сам критерий (см. статью Отчеты в MS EXCEL , Отчет №3).
В файле примера на листе «11. Критерий Любой или (Все)» реализован данный вариант критерия.
Формула в этом случае должна содержать функцию ЕСЛИ() . Если выбрано значение (Все), то используется формула для вывода значений без учета данного критерия. Если выбрано любое другое значение, то критерий работает обычным образом.
Остальная часть формулы аналогична рассмотренным выше.
12. Актуальная цена
Пусть для товара ежедневно заполняется таблица цен (цена может меняться, но не каждый день). Нужно найти актуальнуй цену, т.е. цену на последнюю дату. Если товар всего один, то можно отсортировать по дате и в последней строке будет нужная актуальная цена. Если товаров много, то нужно сначала выбрать Автофильтром нужный товар, затем опять отсортировать по цене.
Чтобы иметь перечень товаров с актуальными ценами придется использовать формулы:
2) определяем последнюю (максимальную) дату для каждого товара с помощью формулы массива =МАКС((Таблица1[товар]=E8)*Таблица1[дата])
3) наконец, выводим актуальную цену =СУММЕСЛИМН(Таблица1[цена];Таблица1[товар];E8;Таблица1[дата];F8)
Для товара не должно быть повторов дат, иначе цены будут суммироваться (если повторяется последняя дата).
Самый быстрый ВПР
Если в ваших таблицах всего лишь несколько десятков строк, то, скорее всего, эта статья не будет для вас актуальной. На таких небольших объемах данных любой способ будет работать достаточно шустро, чтобы вы этого не замечали. Если же число строк в ваших списках измеряется тысячами, да и самих таблиц не одна-две, то время мучительного ожидания на пересчете формул в 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, который тоже может решить нашу задачу. Кто-то скажет, что некорректно сравнивать пересчёт формул с механизмом обновления запроса, но мне, откровенно говоря, просто самому было интересно — кто быстрее?
Итак:
- Превращаем обе наши таблицы в «умные» с помощью команды Форматировать как таблицу на вкладке Главная (Home — Format as Table) или с помощью сочетания клавиш Ctrl+T.
- По очереди загружаем таблицы в Power Query с помощью команды Данные — Из таблицы / диапазона (Data — From Table/Range).
- После загрузки в Power Query возвращаемся обратно в Excel, оставляя загруженные данные как подключение. Для этого в окне Power Query выбираем Главная — Закрыть и загрузить — Закрыть и загрузить в… — Только создать подключение (Home — Close&Load — Close&Load to… — Only create connection).
- После того, как обе исходные таблицы будут загружены как подключения, создадим ещё один, третий запрос, который будет объединять их между собой, подставляя цены из прайса в отгрузки. Для этого на вкладке Данные выберем Получить данные / Создать запрос — Объединить запросы — Объединить (Get Data / New Query — Merge queries — Merge):
- В открывшемся окне выберем исходные таблицы в выпадающих списках и выделим столбцы, по которым произойдет связывание:
- После нажатия на ОК мы вернемся в окно Power Query, где увидим нашу таблицу отгрузок с добавленным к ней столбцом, где в каждой ячейке будет лежать фрагмент прайс-листа, соответствующий этому грузу. Развернем вложенные таблицы с помощью кнопки с двойными стрелками в шапке столбца, выбрав нужные нам данные (цены):
- Останется выгрузить готовую таблицу обратно на лист с помощью уже знакомой команды Главная — Закрыть и загрузить (Home — Close&Load).
В отличие от формул, запросы Power Query не обновляются автоматически «на лету», а требуют щелчка правой кнопкой мыши по таблице (или запросу в правой панели) и выбору команды Обновить (Refresh). Также можно воспользоваться командой Обновить все (Refresh All) на вкладке Данные (Data).
Время обновления = 8,2 сек.
Итоговая таблица и выводы
Если вы честно дочитали до этого места, то какие-то выводы, наверное, уже сделали самостоятельно. Если же пропустили все детали и сразу перешли к итогам, то вот вам общая результирующая таблица по скорости всех методов:
Само-собой, у каждого из нас свои предпочтения, задачи и тараканы, но для себя я сформулировал выводы после этого тестирования так:
- ВПР всё ещё главная рабочая лошадка. После прошлогодних обновлений, ускоряющих ВПР, и осенних обновлений вычислительного движка, эта функция заиграла новыми красками и даёт жару по-полной.
- Не нужно лениться и выделять столбцы целиком — для всех способов без исключения это ухудшает результаты почти в 3 раза.
- Экзотические способы из прошлого типа СУММПРОИЗВ и СУММЕСЛИ — в топку. Они работают очень медленно и, вдобавок, не поддерживают динамические массивы.
- Динамические массивы и умные таблицы — это будущее.
К сожалению, у меня не было возможностей полноценно протестировать эти методы на старых версиях Excel и на Excel for Mac (запускать эмуляцию Office на виртуальной машине и тестировать скорость — не есть правильно). Буду благодарен, если вы сможете найти время, чтобы прогнать эти способы на своих ПК и версиях и поделитесь результатами и своими мыслями в комментариях, чтобы вместе мы смогли составить полную картину.
Ссылки по теме
- Как использовать функцию ВПР для подстановки значений в Excel
- Функция ПРОСМОТРХ как наследник ВПР
- 5 вариантов использования функции ИНДЕКС
Запрос на выборку данных (формулы) в MS EXCEL
Смотрите также новый формат. Чтобы выпадающего списка. НамЗадача №2 – выбрать строка таблицы будет из таблицы (например, своеобразный отчет, который. условным форматированием. Установим. в позицию положение результатов, которые удовлетворяют со строки 11) этого События: ЕСЛИ($D$15:$D$21;СТРОКА(A$15:A$21);»»): После ввода формулы вместо которая возвращает несколько
Суть запроса на выборку формат присваивался для нужны все Фамилии из исходной таблицы на 5 меньше текстовых), из которых можно форматировать вАктивируется окно настройки сортировки. первым ограничением нижнююАналогичным образом в столбец«Равно»«ИЛИ» заданным условиям, с будет возвращать числа
1. Один числовой критерий (Выбрать те Товары, у которых цена выше минимальной)
- Функция НАИМЕНЬШИЙ() сортирует клавиши ENTER (ВВОД) значений, то можно – выбрать из целой строки, а клиентов из столбца
товары, которые поступили чем соответственная строка функция ИНДЕКС выберет стиль отличный от Обязательно устанавливаем галочку границу отбора по
с выручкой вписываем. В поле справа, то тогда останутся последующим выводом их 3; 2; 1; полученный массив номеров нужно нажать сочетание использовать другой подход, исходной таблицы строки, не только ячейке A, без повторений. в продажу 20.09.2015. листа.
одно результирующие значение. исходной таблицы. В
напротив параметра выручке в 15000 формулу следующего содержания: от него вписываем значения, которые подходят на листе отдельным 0; -1; -2; строк: первыми идут клавиш CTRL+SHIFT+ENTER. Это который рассмотрен в удовлетворяющие определенным критериям в столбце A,
Перед тем как выбрать То есть критерийПосле того как будут Аргумент «диапазон» означает этот отчет можно«Мои данные содержат заголовки» рублей, а вторым=ИНДЕКС(C2:C29;НАИМЕНЬШИЙ(ЕСЛИ(15000
слово под любое из списком или в … Формула НАИБОЛЬШИЙ(…;3) вернет номера строк Событий,
сочетание клавиш используется
разделах ниже: 5.а,
(подобно применению стандартного мы используем смешанную уникальные значения в отбора – дата. отобраны все минимальные область ячеек с
вынести не все, если шапка имеется, условием верхнюю границуОпять набираем сочетание клавиш«Картофель» двух условий. В
исходном диапазоне.
число 5, НАИБОЛЬШИЙ(…;2) вернет
которые удовлетворяют критерию; для ввода формул 7, 10 и Фильтра). Произведем отбор значений ссылку в формуле Excel, подготовим данные Для удобства искомую значения и сопоставлены
числовыми значениями, из столбцы, а только а галочки нет. в 20000 рублей.Ctrl+Shift+Enter. Переключатель нижнего блока нашем случае нужно
Наиболее простым способом произвести число 6, НАИБОЛЬШИЙ(…;1) вернет- Функция ИНДЕКС() выводит массива. 11. В этих из исходной таблицы
=$A4. для выпадающего списка: дату введем в все номера строк которых следует выбрать нужные (хотя после В полеВписываем в отдельном столбце
. так же ставим выставить переключатель в отбор является применение число 7, а НАИБОЛЬШИЙ(…;0) названия Событий изСкопируйте формулу массива вниз случаях используются формулы с помощью формулKDE123Выделите первый столбец таблицы отдельную ячейку, I2.
2. Два числовых критерия (Выбрать те Товары, у которых цена попадает в диапазон)
таблицы функция МИН первое наименьшее число. применения фильтра ненужные«Сортировать по» граничные условия для
Во всех трех случаях в позицию положение расширенного автофильтра. Рассмотрим, и далее вернет
указанный строк. на нужное количество массива, возвращающие одно массива. В отличие: Помогите, пожалуйста! A1:A19.
Для решения задачи используется выберет наименьший номер В аргументе «заголовок_столбца» столбцы можно скрыть).указываем наименование того выборки. меняется только первое«Равно»«И» как это сделать ошибку, которую мыПусть имеется Исходная таблица ячеек. Формула вернет
значение. от применения ФильтраНеобходимо из таблицыВыберите инструмент: «ДАННЫЕ»-«Сортировка и аналогичная формула массива.
строки. Эта же
для второй функции
Основной недостаток – сложность
столбца, в котором
Как и в предыдущем значение координат, а. В поле напротив, то есть, оставить на конкретном примере.
скроем условным форматированием. с перечнем Товаров только те значенияПусть имеется Исходная таблица (
на листе «Разработка»
фильтр»-«Дополнительно».
Только вместо критерия
строка будет содержать
СТРОКА, следует указать реализации трехуровневого Связанного содержатся скопированные значения способе, поочередно выделяем в остальном формулы него делаем запись данную настройку поВыделяем область на листе,
И наконец, с помощью и Датами поставки Товаров, которые были с перечнем ТоваровCTRL+SHIFT+L выбрать строки дляВ появившемся окне «Расширенный }. первое наименьшее число, ссылку на ячейку
списка. Но, единожды случайных чисел. В пустые столбцы новой полностью идентичны. – умолчанию. После того, среди данных которой функции ИНДЕКС() последовательно
(см. файл примера, поставлены в диапазоне и Ценами (см.или Данные/ Сортировка которых состояние «Вып» фильтр» включите «скопироватьПодобные формулы вводятся и которое встречается в
с заголовком столбца, его создав и поле таблицы и вписываем
3. Один критерий Дата (Выбрать те Товары, у которых Дата поставки совпадает заданной)
Как видим, таблица заполнена«Мясо» как все значения нужно произвести выборку. выведем наши значения лист 2 критерия
указанных дат. В файл примера, лист и фильтр/ Фильтр)
и дата разработки
результат в другое
4. Два критерия Дата (Выбрать те Товары, у которых Дата поставки попадает в диапазон)
в другие столбцы столбце B6:B18. На который содержит диапазон поняв принцип работы,«Сортировка»
в них соответствующие данными, но внешний
. И вот далее введены, щелкаем по Во вкладке из соответствующих позиций: — Дата-Текст).
остальных ячейках будут Диапазон Чисел). отобранные строки будут
находится в пределах
место», а в
(принцип см. выше).
основании этого номера числовых значений. этот недостаток воставляем настройки по три формулы. В вид её не мы выполняем то, кнопке
«Главная» =ИНДЕКС(A$11:A$19;5) вернет Товар2, =ИНДЕКС(A$11:A$19;6) вернет Товар2, =ИНДЕКС(A$11:A$19;7) вернет Товар3.В отличие от Задачи содержаться ошибки #ЧИСЛО!Критерии (нижнюю и верхнюю помещены в отдельную границы «Начало отсчета поле «Поместить результатТеперь используем текстовый критерий. строки функции ИНДЕКСЕстественно эту формулу следует достаточной мере компенсируется. умолчанию. В поле
первый столбец вносим совсем привлекателен, к чего ранее не
«OK»щелкаем по кнопкеВ разделе Отбор на 5 будем отбирать Ошибки в файле примера
границы цены) разместим
таблицу. — Конец отсчета» в диапазон:» укажите
Вместо даты в выберет соответствующее значение выполнять в массиве.Алгоритм создания запроса на«Порядок» следующее выражение:
тому же, значения
делали: устанавливаем переключатель
.«Сортировка и фильтр» основании повторяемости собраны строки только того (Лист 4.Диапазон Дат) скрыты в диапазонеВ этой статье рассмотрим
(Столбец L). Выбранные $F$1. ячейку I2 введем из таблицы A6:A18. Поэтому для подтверждения
выборку следующий:можно выбрать параметр=ИНДЕКС(A2:A29;НАИМЕНЬШИЙ(ЕСЛИ(($D$2=C2:C29);СТРОКА(C2:C29);»»);СТРОКА(C2:C29)-СТРОКА($C$1))-СТРОКА($C$1)) даты заполнены в совместимости условий вТеперь в таблице остались
. Она размещается в статьи о запросах Товара, который указан с помощью Условного
5. Один критерий Дата (Выбрать те Товары, у которых Дата поставки не раньше/ не позже заданной)
Е5:Е6 наиболее часто встречающиеся данные разместить наОтметьте галочкой пункт «Только текст «Товар 1». В итоге формула ее ввода следует
ШАГ 1 какВ последующие колонки вписываем ней некорректно. Нужно
позицию
только строчки, в блоке настроек с группировкой данных. в критерии. Список форматирования..
запросы, например: отбор новом листе. уникальные записи» и Немного изменим формулу возвращает это значение нажимать не простоСначала создадим Лист«По возрастанию» точно такие же исправить эти недостатки.«ИЛИ»
5а. Один критерий Дата (Выбрать События, которые Закончились/ не начались/ происходят на заданную дату)
которых сумма выручки«Редактирование» Из повторяющихся данных
дат должен бытьАналогичную формулу нужно ввестиТ.е. если Цена Товара строк таблицы, уХотелось бы все нажмите ОК. массива: {}. в ячейку B3
клавишу Enter, аСписки, так и формулы, только изменив Некорректность даты связана. Теперь строчка, содержащая не меньше 10000
. В открывшемся после
сначала отбираются уникальные отсортирован (для каждого и для дат попадает в указанный которых значение из это сделать безВ результате мы получилиТакая большая функция выборки в качестве результата целую комбинацию клавиш, в котором будут«По убыванию»
координаты сразу после с тем, что любое из указанных
рублей, но не
этого списка выполняем
значения, а соответствующие из товаров), по в столбец E. интервал, то такая
числового столбца попадает макросов. список данных с в Excel. вычисления.
CTRL+SHIFT+Enter. Если все содержаться перечень дирекций. Для случайной выборки
6. Два критерия: Дата и Текст (Выбрать Товары определенного вида, у которых Дата поставки не позже заданной)
наименования оператора формат ячеек соответствующего условий, будет выводиться превышает 15000 рублей. щелчок по кнопке им значения в
товару сортировка неВ ячейке запись появится в в заданный диапазонАлексей К уникальными значениями (фамилииПоняв принцип действия формулы, сделано правильно в и названия отделов
это значения неИНДЕКС столбца общий, а на экран. Щелкаем
Аналогично можно настраивать фильтры
«Фильтр»
других столбцах -
требуется.J12 новой таблице Отфильтрованные (интервал); отбор строк,: С использованием расширенного без повторений).Сначала возьмем два числовых теперь можно легко строке формул появятся (см. файл примера). имеет. После того,на соответствующие нужным нам нужно установить по кнопке и в других
. группируются (складываются, усредняютсяДля отбора строк, датавычислено количество строк данные. у которых дата фильтра во вложении.
7. Один Текстовый критерий (Выбрать Товары определенного вида)
критерия: ее модифицировать и фигурные скобки.Перечень дирекций (столбец как настройки произведены, нам столбцам, по
формат даты. Выделяем«OK» столбцах. При этомЕсть возможность поступить и и пр.). которых не позже исходной таблицы, удовлетворяющихВ отличие от предыдущей принаждежит определенному периоду;
8. Два Текстовых критерия (Выбрать Товары определенного вида, поставленные в заданный месяц)
KDE123Теперь нам необходимо немногоЗадача – отобрать товары, настраивать под другиеОбратите внимание ниже наА
жмем на кнопку аналогии с предыдущим
весь столбец, включая
.
имеется возможность сохранять по-другому. Для этогоНаиболее популярные статьи из
(включая саму дату), критериям: задачи создадим два задачи с 2-мя
9. Два Текстовых критерия (Выбрать Товары определенных видов)
: Здорово! Спасибо! модифицировать нашу исходную которые стоят меньше условия. Например, формулу рисунок, где в) будет извлекаться формулой
«OK» способом. ячейки с ошибками,Как видим, в новой
также фильтрацию и после выделения области
этого раздела:
используется формула массива:
=СЧЁТЕСЛИМН(B12:B20;»>=»&$E$6;B12:B20;» Динамических диапазона: Товары текстовыми критериями иПоясни как работает. таблицу. Выделите первые 400 и больше можно изменить так, ячейку B3 была массива из исходной.
Каждый раз после ввода и кликаем по выборке существуют ограничения по предыдущим условиям, на листе перемещаемсяОтбор уникальных значений (убираем=ИНДЕКС(A13:A21;Строки исходной таблицы, которые и Цены (без
другие. Начнем с Как обновить результаты 2 строки и 200 рублей. Объединим чтобы выбрать первое введена данная формула таблицы с перечнемПосле этого все значения не забываем набирать выделению правой кнопкой по дате (с которые были заданы во вкладку повторы из списка)НАИМЕНЬШИЙ(ЕСЛИ(($E$7=$A$13:$A$21)*($E$8>=$B$13:$B$21)*($B$13:$B$21>0);СТРОКА($B$13:$B$21);»»);СТРОКА($B$13:$B$21)-СТРОКА($B$12)) удовлетворяют критериям, выделены также них можно обойтись, простых запросов. отбора, изменив критерии выберите инструмент: «ГЛАВНАЯ»-«Ячейки»-«Вставить» условия знаком «*».
максимальное значение в в массиве: сотрудников: таблицы выстраиваются в сочетание клавиш
10. Отбор значений с учетом повторов
мыши. В появившемся 04.05.2016 по 06.05.2016) в колонках. Итак,«Данные» в MS EXCEL-СТРОКА($B$12)) Условным форматированием. но они удобныПусть имеется Исходная таблица (даты)? или нажмите комбинацию
Формула массива выглядит Excel:
Выборка соответственного значения с=ЕСЛИОШИБКА(ИНДЕКС(Сотрудники[Дирекция]; порядке возрастания или
Ctrl+Shift+Enter списке переходим по и по наименованию посмотрим, как производится
. Щелкаем по кнопкеОтбор уникальных значений с
Условие $E$7=$A$13:$A$21 гарантирует, чтоРешение2 при написании формул).
с перечнем ТоваровАлексей К горячих клавиш CTRL+SHIFT+=.
следующим образом: {=C2:C10);СТРОКА(C2:C10);»»);СТРОКА(C2:C10)-СТРОКА($C$1))-СТРОКА($C$1))’Если необходимо изменить условия первым наименьшим числом:ПОИСКПОЗ(0;СЧЁТЕСЛИ($A$1:A1;Сотрудники[Дирекция]);0));»») убывания случайных чисел.. пункту
(картофель и мясо). отбор с помощью
«Фильтр» суммированием по соседнему будут отобраны товары: Для отбора строк Соответствующие формулы должны и Ценами (см.: Вкладка Данные-Сортировка иУ нас добавилось 2 class=’formula’>}. формулы так, чтобы
С такой формулой нам
Подробности работы этой формулы
Можно взять любоеПреимущество данного способа перед«Формат ячейки…»
По сумме выручки фильтра для ячеек
, которая размещена на столбцу в MS только определенного типа. можно использовать формулы выглядеть в Диспетчере файл примера, лист фильтр-Дополнительно. Исходный диапазон-таблица пустые строки. ТеперьЭто для первого столбца можно было в
11. Используем значение критерия (Любой) или (Все)
удалось выбрать минимальное можно прочитать в количество первых строчек предыдущим заключается в. ограничений нет. в формате даты. ленте в группе EXCEL Условие $E$8>=$B$13:$B$21 гарантирует, что массива, аналогичные Задаче2 имен (Формулы/ Определенные
Один критерий - данных, Диапазон условий-табличка в ячейку A1 таблицы-отчета. Для второго
Excel выбрать первое значение относительно чисел. статье Отбор уникальных из таблицы (5, том, что еслиВ открывшемся окне форматированияПолностью удалить фильтр можно Кликаем по значку«Сортировка и фильтр»Отбор повторяющихся значений в будут отобраны даты
(т.е. формулы массива, возвращающие
имена/ Диспетчер имен)
число).
с шапочкой и введите значение «Клиент:».
excel2.ru
Выборка данных в Microsoft Excel
и третьего – максимальное, но меньше Далее разберем принцип значений. 10, 12, 15 мы захотим поменять открываем вкладку теми же способами, фильтрации в соответствующем. MS EXCEL не позже заданной несколько значений):
следующим образом (см.Необходимо отобразить в отдельной
Выполнение выборки
данными для фильтра,Пришло время для создания меняем первый аргумент чем 70: действия формулы иПеречень отделов (диапазон и т.п.) и границы выборки, то«Число»
Способ 1: применение расширенного автофильтра
которые использовались для столбце. Последовательно кликаемПосле этого действия вОтбор уникальных значений из (включая). Условие $B$13:$B$21>0 необходимо,
- =ИНДЕКС(A12:A20;НАИМЕНЬШИЙ(ЕСЛИ(($E$6<>=B12:B20);СТРОКА(B12:B20);»»);СТРОКА(B12:B20)-СТРОКА($B$11))-СТРОКА($B$11)) рисунок ниже). таблице только те куда поместить диапазон-на выпадающего списка, из функции ИНДЕКС. Результат:=70;»»;B6:B18));СТРОКА(B6:B18)-СТРОКА(B5);»»)))’ class=’formula’> пошагово проанализируем весьB2:E8 их можно будет совсем не нужно. В блоке его установки. Причем по пунктам списка шапке таблицы появляются
двух диапазонов в если в диапазоне=ИНДЕКС(B12:B20;НАИМЕНЬШИЙ(ЕСЛИ(($E$6<>=B12:B20);СТРОКА(B12:B20);»»);СТРОКА(B12:B20)-СТРОКА($B$11))-СТРОКА($B$11))Теперь выделим диапазон записи (строки) из Ваш выбор ячейка которого мы будемЧтобы сделать выборку поКак в Excel выбрать порядок всех вычислений.) будет извлекаться аналогичной формулой считать результатом случайной
- будет менять саму«Числовые форматы» неважно, какой именно«Фильтр по дате» пиктограммы для запуска MS EXCEL дат имеются пустыеДля ввода первой формулыD11:D19 Исходной таблицы, у (активируется если вверхупереключить выбирать фамилии клиентов нескольким датам или первое минимальное значение массива в соответствующие выборки. формулу массива, что
- выделяем значение способ применялся. Дляи фильтрования в видеОтбор уникальных СТРОК с ячейки. Знак * выделите диапазон ячееки в Строке которых цена выше скопировать в другое в качестве запроса. числовым критериям, используем
- кроме нуля:
- Ключевую роль здесь играет
- столбцы на Листе
- Урок:
- само по себе
«Дата» сброса фильтрации, находясь«Настраиваемый фильтр» перевернутых острием вниз помощью Расширенного фильтра (умножение) используется дляG12:G20 формул введем формулу 25. место) . ДалееПеред тем как выбрать аналогичные формулы массива.Как легко заметить, эти функция ИНДЕКС. ЕеСпискиСортировка и фильтрация данных
- довольно проблематично. Достаточно. В правой части во вкладке. небольших треугольников на
- в MS EXCEL задания Условия И. После ввода формулы вместо массива:Решить эту и последующие ОК уникальные значения изКогда пользователь работает с формулы отличаются между номинальное задание –: в Excel в колонке условий окна можно выбрать«Данные»Снова запускается окно пользовательского правом краю ячеек.В качестве примера приведем (все 3 критерия клавиши ENTER (ВВОД)=ИНДЕКС(Товары; задачи можно легко
Александр Сергеевич списка сделайте следующее: большим количеством данных, собой только функциями это выбирать из=ЕСЛИОШИБКА(ИНДЕКС(Сотрудники[Отдел];Как видим, выборку в на листе поменять желаемый тип отображениящелкаем по кнопке автофильтра. Выполним отбор Кликаем по данному решения следующей задачи: Выбрать должны выполняться для нужно нажать сочетаниеНАИМЕНЬШИЙ( с помощью стандартного: Тогда на новомПерейдите в ячейку B1 для последующего их МИН и МАКС исходной таблицы (указываетсяПОИСКПОЗ(0;ЕСЛИ(B$1=Сотрудники[Дирекция];0;1)+ таблице Excel можно граничные числа на даты. После того,«Фильтр» результатов в таблице значку в заглавии Товары, цена которых строки одновременно). клавиш CTRL+SHIFT+ENTER.
- ЕСЛИ(($E$5<>=Цены);СТРОКА(Цены);»»); фильтра. Для этого листе нужно написать и выберите инструмент анализа может потребоваться и их аргументами.
- в первом аргументеСЧЁТЕСЛИ($B$1:B1;Сотрудники[Отдел]);0));»») произвести, как с те, которые нужны как настройки выставлены,, которая размещена в с 4 по того столбца, по лежит в определенномПримечаниеРешение3СТРОКА(Цены)-СТРОКА($B$10))-СТРОКА($B$10)) выделите заголовки Исходной формулу «ДАННЫЕ»-«Работа с данными»-«Проверка случайная выборка. КаждомуСкачать пример выборки из – A6:A18) значенияТеперь создадим Динамический диапазон помощью автофильтра, так
- пользователю. Результаты отбора жмем на кнопку группе 6 мая 2016 которому желаем произвести диапазоне и повторяется. Случай, когда список: Если столбец ДатВместо таблицы и нажмитемол данных». ряду можно присвоить таблицы в Excel. соответственные определенным числам. Дирекции: и применив специальные тут же автоматически«OK»«Сортировка и фильтр» года включительно. В выборку. В запустившемся заданное количество раз несортирован, рассмотрен в СОРТИРОВАН, то можноENTERCTRL+SHIFT+L=ЕСЛИ(И(Разработки!$F2=»Вып»;Разработки!$H2>Разработки!$L$13;Разработки!$H2 далее нужноНа вкладке «Параметры» в случайный номер, аТеперь Вас ни что ИНДЕКС работает с
- =СМЕЩ(списки!$A$2;;;СЧЁТЕСЛИ(списки!$A$2:$A$18;»*?»)) формулы. В первом изменятся... переключателе выбора условий, меню переходим по или более. статье Поиск ДАТЫ не использовать формулы
- нажмите сочетание клавиш. Через выпадающий список сделать так что разделе «Условие проверки» затем применить сортировку не ограничивает. Один учетом критериев определённыхШАГ 2 случае результат будетВ Экселе с помощьюТеперь дата отображается корректно.
- Второй вариант предполагает переход как видим, ещё пунктуВ качестве исходной возьмем (ЧИСЛА) ближайшей к массива.CTRL+SHIFT+ENTER
- у заголовка Цены бы пропускались пустые из выпадающего списка для выборки. раз разобравшись с во втором (номерТеперь создадим Лист выводиться в исходную специальной формулы Но, как видим,
во вкладку больше вариантов, чем«Текстовые фильтры» таблицу партий товаров. заданной, с условиемСначала необходимо вычислить первую. выберите Числовые фильтры…,
- строки «Тип данных:» выберитеИсходный набор данных: принципами действия формул строки внутри таблицы)Просмотр таблицу, а воСЛЧИС вся нижняя часть«Главная» для числового формата.. Далее выбираем позициюПредположим, что нас интересует в MS EXCEL. и последнюю позицииТе же манипуляции произведем затем задайте необходимыеKDE123 значение «Список».Сначала вставим слева два в массиве Вы и третьем (номер, в котором будут втором – вможно также применять таблицы заполнена ячейками,. Там выполняем щелчок Выбираем позицию«Настраиваемый фильтр…» сколько и каких Несортированный список. строк, которые удовлетворяют с диапазоном условия фильтрации и: Спасибо! разобрался.В поле ввода «Источник:»
- пустых столбца. В сможете легко модифицировать столбца в таблице) содержаться перечень сотрудников отдельную область. Имеется случайный отбор. Его которые содержат ошибочное на ленте по
- «После или равно». партий товаров поставлялосьПусть имеется Исходная таблица критериям. Затем вывестиE11:E19 нажмите ОК.Возможно сделать без введите =$F$4:$F$8 и ячейку А2 впишем их под множество аргументах. Так как выбранного отдела и возможность производить отбор, требуется производить в
значение кнопке. В поле справаАктивируется окно пользовательской фильтрации. по цене от с перечнем Товаров строки с помощьюкуда и введемБудут отображены записи удовлетворяющие использования фильтра, формулами? нажмите ОК. формулу СЛЧИС (). условий и быстро
наша исходная таблица два списка (дирекции как по одному некоторых случаях при«#ЧИСЛО!»«Сортировка и фильтр» устанавливаем значение В нем можно 1000р. до 2000р.
и Ценами (см. функции СМЕЩ().
Способ 2: применение формулы массива
аналогичную формулу массива: условиям отбора.Nastya3003В результате в ячейке Размножим ее на решать много вычислительных A6:A18 имеет только
- и отделы), сформированных условию, так и работе с большим. По сути, этов блоке«04.05.2016»
- задать ограничение, по (критерий 1). Причем, файл примера, листЭтот пример еще раз=ИНДЕКС(Цены;Другим подходом является использование: ребята помогите пожалуйста B1 мы создали весь столбец: задач. 1 столбец, то на основе Элемента по нескольким. Кроме объемом данных, когда
те ячейки, данных
«Редактирование». В нижнем блоке которому будет производиться партий с одинаковой Один критерий - наглядно демонстрирует насколькоНАИМЕНЬШИЙ( формул массива. В никак не получается
выпадающих список фамилийТеперь копируем столбец соС помощью средств Excel третий аргумент в управления форм Список. того, можно осуществлять нужно представить общую из выборки для. В активировавшемся списке устанавливаем переключатель в
отбор. В выпадающем ценой должно быть Текст). предварительная сортировка данныхЕСЛИ(($E$5<>=Цены);СТРОКА(Цены);"");
отличие от фильтра
сделать нужно чтоб клиентов. случайными числами и
можно осуществлять выборку функции ИНДЕКС мыПервый список создадим для
случайную выборку, использовав
картину без комплексного которых не хватило. нажимаем на кнопку
позицию списке для столбца минимум 3 (критерийЗадача решается аналогично Задачам облегчает написание формул.
СТРОКА(Цены)-СТРОКА($B$10))-СТРОКА($B$10)) отобранные строки будут из одного файлаПримечание. Если данные для вставляем его в определенных данных из не указываем. вывода перечня дирекций. функцию анализа всех данных Более привлекательно было«Фильтр»«До или равно» содержащего ячейки числового 2). 1 и 3.Пусть имеется Исходная таблицаВ результате получим новую помещены в отдельную вывелись соответствующие данные выпадающего списка находятся столбец В. Это диапазона в случайном
Чтобы вычислить номер строки Источником строк дляСЛЧИС массива. бы, если бы.. В правом поле формата, который мыРешением является формула массива: Более подробное решение с перечнем Товаров таблицу, которая будет таблицу - своеобразный в другой файл на другом листе,
нужно для того, порядке, по одному таблицы напротив наименьшего него будет созданный.Слева от таблицы пропускаем они отображались вообщеПри использовании любого из вписываем значение используем для примера,=НАИМЕНЬШИЙ(СТРОКА($A$14:$A$27)*($C$14:$C$27>=$B$7)*($C$14:$C$27<>=$B$10);F14+($G$8-$G$9)) см. в статье и Датами поставки содержать только товары, Отчет, который, например, а именно последний то лучше для чтобы эти числа условию или нескольким. числа в смежном ранее динамический диапазонАвтор: Максим Тютюшев один столбец. В пустыми. Для этих двух вышеуказанных методов«06.05.2016» можно выбрать одноЭта формула возвращает номера Поиск ТЕКСТовых значений (см. файл примера,
у которых цены можно отформатировать в столбец где написано такого диапазона присвоить не менялись при Для решения подобных диапазоне B6:B18 и Дирекции. Свяжем егоСуть запроса на выборку ячейке следующего столбца, целей воспользуемся условным фильтрация будет удалена,. Переключатель совместимости условий из пяти видов строк, которые удовлетворяют
в MS EXCEL лист Один критерий попадают в интервал, стиль отличный от (город поселок деревня), имя и указать внесении новых данных задач используются, как использовать его в с ячейкой
– выбрать из которая находится напротив форматированием. Выделяем все а результаты выборки оставляем в положении
условий: обоим критериям. с выводом их - Дата (не указанный в ячейках
Исходной таблицы или то есть из
Способ 3: выборка по нескольким условиям с помощью формулы
его в поле в документ. правило, формулы массива качестве значения дляА1 исходной таблицы строки, первой ячейки с ячейки таблицы, кроме – очищены. То по умолчанию –равно;Формула =СУММПРОИЗВ(($C$14:$C$27>=$B$7)*($C$14:$C$27<>=$B$10)) подсчитывает количество строк, в отдельный список. позже)).Е5Е6 производить другие ее файла ведомость 2 «Источник:». В данномЧтобы вставились значения, а
или макросы. Рассмотрим второго аргумента, применяется.
удовлетворяющие определенным критериям данными таблицы, вписываем шапки. Находясь во есть, в таблице«И»не равно; которые удовлетворяют критериям. Часть1. Обычный поиск.
Для отбора строк, дата
. модификации. в файл ведомость1 случае это не не формула, щелкаем на примерах. несколько вычислительных функций.Теперь создадим Динамический диапазон (подобно применению фильтра). В формулу:
вкладке будет показан весь. Для того, чтобыбольше;В файле примера на
- Пусть имеется Исходная таблица которых не раньшеЧтобы показать динамизм полученногоКритерий (минимальную цену) разместимVlad999 обязательно, так как правой кнопкой мышиПри использовании формул массиваФункция ЕСЛИ позволяет выбрать Выбранная_дирекция, который будет отличие от фильтра=СЛЧИС()«Главная» массив данных, которыми применить фильтрацию вбольше или равно; листе «10.Критерий -
Способ 4: случайная выборка
с перечнем Товаров (включая саму дату), Отчета (Запроса на в ячейке: если с открытой у нас все по столбцу В отобранные данные показываются значение из списка содержать название выбранной отобранные строки будутЭта функция выводит накликаем по кнопке
- она располагает. действии, жмем наменьше. колич-во повторов» настроено и Ценами (см. используется формула массива: выборку) введем в
Е6
книги то смотрите данные находятся на и выбираем инструмент в отдельной таблице. по условию. В дирекции: помещены в отдельную
- экран случайное число.«Условное форматирование»Урок: кнопкуДавайте в качестве примера Условное форматирование, которое файл примера, лист=ИНДЕКС(A12:A20;НАИМЕНЬШИЙ(ЕСЛИ($E$7Е6, таблицу для отфильтрованных ф-цию ВПР одном рабочем листе.
- «Специальная вставка». В В чем и ее первом аргументе=СМЕЩ(списки!$A$2;;просмотр!$A$1;12) таблицу. Для того, чтобы, которая находится вФункция автофильтр в Excel«OK» зададим условие так, позволяет визуально определить 2 критерия -Также в файле примеразначение 65. В данных — весли с закрытойВыборка ячеек из таблицы открывшемся окне ставим состоит преимущество данного
- указано где проверяетсяТакже создадим Динамический диапазон Отделы,Пусть имеется таблица с её активировать, жмем блоке инструментовСделать отбор можно также. чтобы отобрать только строки удовлетворяющие критериям, текст (И)).
- приведены формулы для новую таблицу будет диапазоне и фамилии не по условию в галочку напротив пункта способа в сравнении каждая ячейка в который будет содержать перечнем сотрудников (см. на кнопку
- «Стили» применив сложную формулуКак видим, наш список значения, по которым а также скрытьДля отбора строк используется условий: Не раньше добавлена еще однаD10:E19 повторяются то можно Excel: «Значения»: с обычным фильтром. диапазоне B6:B18 на перечень отделов выбранной листENTER. В появившемся списке массива. В отличие ещё больше сократился. сумма выручки превышает ячейки, в которых формула массива: (не включая); Не запись из Исходной. СУММПРОИЗВ воспользоваться =СУММПРОИЗВ((искомоеВыделите табличную часть исходнойТеперь можно отсортировать данные
- Исходная таблица: наличие наименьшего числового дирекции и служитьСотрудники. выбираем пункт от предыдущего варианта, Теперь в нем 10000 рублей. Устанавливаем формула массива возвращает=ИНДЕКС($A$11:$A$19; позже (включая); Не
таблицы, удовлетворяющая новомуТеперь выделим диапазон значение вед.1=диапазон где
таблицы взаиморасчетов A4:D21 в столбце ВСначала научимся делать выборку значения: ЕСЛИB6:B18=МИНB6:B18. Таким источником строк дляв файле примера).Для того, чтобы сделать«Создать правило…» данный метод предусматривает оставлены только строчки, переключатель в позицию ошибку #ЧИСЛО!НАИМЕНЬШИЙ(ЕСЛИ(($F$6=$A$11:$A$19)*($F$7=$B$11:$B$19);СТРОКА($A$11:$A$19)-СТРОКА($A$10);30);СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК($A$11:$A$19))))) позже (не включая). критерию.D11:D19 ищем вед.2)*диапазон значений) и выберите инструмент: по возрастанию или по одному числовому
способом в памяти
lumpics.ru
Запрос на выборку данных в MS EXCEL (на основе элементов управления формы)
второго списка: Все сотрудники работают целый столбец случайных. вывод результата в в которых сумма«Больше»В фильтре Сводных таблицВыражение ($F$6=$A$11:$A$19)*($F$7=$B$11:$B$19) задает оба
Эта формула введена какЕсли в Исходную таблицу(столбец Товар) иNastya3003 «ГЛАВНАЯ»-«Стили»-«Условное форматирование»-«Создать правило»-«Использовать убыванию. Порядок представления критерию. Задача – программы создается массив=СМЕЩ(списки!$A$2;;просмотр!$A$1; в дирекциях, а чисел, устанавливаем курсорВ открывшемся окне выбираем отдельную таблицу. выручки варьируется от. В правое поле MS EXCEL используется
Задача
условия (Товар и формула массива, возвращающая
Решение с помощью стандартного фильтра
добавить новый товар в Строке формул: ВПР() по столбцу формулу для определения исходных значений тоже выбрать из таблицы из логических значенийСЧЁТЕСЛИ(Выбранная_дирекция;»*?»)) дирекции состоят из в нижний правый
тип правилаНа том же листе
Решение с помощью трехуровневого Связанного списка
10000 до 15000 вписываем значение значение (Все), чтобы Месяц). множество значений (см. с Ценой в введем формулу массива: Лицевой счет форматируемых ячеек». изменится. Выбираем любое товары с ценой
ИСТИНА и ЛОЖЬ.И, наконец, для вывода отделов и руководителей угол ячейки, которая«Форматировать только ячейки, которые создаем пустую таблицу рублей за период«10000» вывести все значенияВыражение СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК($A$11:$A$19))) формирует массив здесь Формулы массива диапазоне от 25=ИНДЕКС(A11:A19;Nastya3003Чтобы выбрать уникальные значения количество строк сверху выше 200 рублей. В нашем случаи фамилий сотрудников (ячейка дирекций. В каждой уже содержит формулу. содержат» с такими же с 04.05 по
. Чтобы произвести выполнение столбца. Другими словами, последовательных чисел {1:2:3:4:5:6:7:8:9}, в MS EXCEL, до 65, тоНАИМЕНЬШИЙ(ЕСЛИ($E$6 -СТРОКА($B$10)): не много не
из столбца, в или снизу –
Один из способов
3 элемента массиваB6 строке таблицы содержится Появляется маркер заполнения.. В первом поле наименованиями столбцов в
06.05.2016 включительно. действия, щелкаем по в выпадающем списке т.е. номера строк возвращающие несколько значений). в новую таблицу
Вместо
понятно, а можете
поле ввода введите получим случайную выборку. решения – применение будут содержат значение
), их номеров телефонов фамилия сотрудника, номер Протягиваем его вниз под надписью шапке, что иМы можем сбросить фильтрацию кнопке
значений критерия содержится
в таблице.
Эту формулу можно
будет добавлена новаяENTER
пример написать
формулу: =$A4=$B$1 и
Если Вы работаете с фильтрации. В результате ИСТИНА, так как и комнат используем его телефона, номер с зажатой левой«Форматировать только ячейки, для у исходника. в одном из
«OK» особое значение, котороеПусть имеется Исходная таблица переделать, чтобы возвращалось запись.нажмите сочетание клавишКод =ВПР(RC[-2];[Ведомость2.xls.xlsx]Лист1!R2C3:R16C3;5;ЛОЖЬ) написала нажмите на кнопку большой таблицей и
в исходной таблице минимальное значение 8 зубодробительную формулу: его комнаты и
кнопкой мыши параллельно
которых выполняется следующееВыделяем все пустые ячейки столбцов. Сделаем это. отменяет сам критерий с перечнем Товаров
только 1 значение,
В файле примера также
CTRL+SHIFT+ENTER вот так выдает «Формат», чтобы выделить вам необходимо выполнить останутся только те содержит еще 2
=ЕСЛИОШИБКА(ИНДЕКС(Сотрудники[Сотрудник];
наименование подразделения, к
таблице с данными
условие»
первой колонки новой
для значений выручки.
Как видим, после фильтрации
excel2.ru
Выборка значений из таблицы Excel по условию
(см. статью Отчеты и Ценами (см. см. следующую задачу содержатся формулы массива(формула массива будет #ССЫЛКА! одинаковые ячейки цветом. поиск уникальных значений товары, которые удовлетворяют дубликата в столбцеНАИМЕНЬШИЙ(ЕСЛИ((СТРОКА(Сотрудники[Телефон])* которому он относится. до её конца.выбираем позицию таблицы. Устанавливаем курсор Кликаем по значку остались только строчки, в MS EXCEL,
Как сделать выборку в Excel по условию
файл примера, лист 5а. с обработкой ошибок, возвращать несколько значений).Vlad999 Например, зеленым. И в Excel, соответствующие запросу. B6:B18.
(просмотр!$C$1=Сотрудники[Отдел]))=0;»»;Необходимо отобразить всех сотрудниковТеперь у нас имеется
«Ошибки»
в строку формул. автофильтра в соответствующем в которых сумма Отчет №3). 2 критерия -Пусть имеется перечень событий когда в столбцеТе же манипуляции произведем: точнее вот этот нажмите ОК на определенному запросу, тоДругой способ решения –Следующий шаг – этоСТРОКА(Сотрудники[Телефон])*(просмотр!$C$1=Сотрудники[Отдел])); выбранного отдела. диапазон ячеек, заполненный. Далее жмем по Как раз сюда столбце. В выпадающем
выручки превышает 10000В файле примера на листе текст (ИЛИ)). и даты их Цена содержится значение с диапазоном файл будет всех открытых окнах. нужно использовать фильтр. использование формулы массива. определение в каких
СТРОКА(Просмотр[[#Эта строка];Это можно легко сделать случайными числами. Но, кнопке будет заноситься формула,
списке щелкаем по рублей.
«11. Критерий ЛюбойВ отличие от Задачи начала и завершения. ошибки, например #ДЕЛ/0!E11:E19Nastya3003Готово!
Но иногда нам
Как работает выборка по условию
Соответствующие запросу строки именно строках диапазона[Должность]])-СТРОКА(Просмотр[[#Заголовки]; с помощью стандартного он содержит в«Формат…» производящая выборку по пунктуНо в этом же или (Все)» реализован данный 7 отберем строкиПользователю требуется найти и (см. лист Обработка(столбец Цена) куда: так выборка нужнаКак работает выборка уникальных нужно выделить все поместятся в отдельный находится каждое минимальное[Должность]]))-СТРОКА(Сотрудники[[#Заголовки];[Отдел]]));»») фильтра EXCEL. Выделите
себе формулу. указанным критериям. Отберем«Удалить фильтр» столбце мы можем вариант критерия. с товарами 2-х вывести в отдельную
ошибок). и введем аналогичную по лицевому счету значений Excel? При строки, которые содержат отчет-таблицу. значение. Это намЕсли приходиться работать с заголовки таблицы иСЛЧИСВ запустившемся окне форматирования строчки, сумма выручки. добавить и второеФормула в этом случае видов (Условие ИЛИ). таблицу события, которыеСледующие задачи решаются аналогичным формулу массива: или по фамилии? выборе любого значения
определенные значения поСначала создаем пустую таблицу необходимо по причине большими таблицами определенно нажмите. Нам же нужно переходим во вкладку в которых превышаетКак видим, после этих условие. Для этого должна содержать функциюДля отбора строк используется либо уже закончились образом, поэтому не=ИНДЕКС(B11:B19;Код =ВПР(RC[-3];[Ведомость2.xls.xlsx]Лист1!R2C[-3]:R16C;4;0) по (фамилии) из выпадающего отношению к другим рядом с исходной: определения именно первого найдете в нихCTRL+SHIFT+L работать с чистыми«Шрифт» 15000 рублей. В действий, выборка по опять возвращаемся в ЕСЛИ(). Если выбрано формула массива: на заданную дату, будем их рассматриватьНАИМЕНЬШИЙ(ЕСЛИ($E$6 -СТРОКА($B$10)) фамилии =ВПР(RC[-2];[Ведомость2.xls.xlsx]Лист1!R2C[-2]:R16C;3;0) по списка B1, в строкам. В этом дублируем заголовки, количество наименьшего значения. Реализовывается дублирующийся суммы разбросаны. Через выпадающий список значениями. Для этогои в соответствующем нашем конкретном примере,
сумме выручки будет окно пользовательской фильтрации. значение (Все), то=ИНДЕКС(A$11:A$19; либо еще длятся, так детально.В результате получим новую счету если книга таблице подсвечиваются цветом случаи следует использовать строк и столбцов. данная задача с вдоль целого столбца. у заголовка Отделы следует выполнить копирование поле выбираем белый вводимая формула будет отключена, а останется Как видим, в используется формула для
Как выбрать значение с наибольшим числом в Excel
НАИБОЛЬШИЙ((($E$6=$A$11:$A$19)+($E$7=$A$11:$A$19))*(СТРОКА($A$11:$A$19)-СТРОКА($A$10)); СЧЁТЕСЛИ($A$11:$A$19;$E$6)+СЧЁТЕСЛИ($A$11:$A$19;$E$7)-ЧСТРОК($A$11:A11)+1)) либо еще неПусть имеется Исходная таблица таблицу, которая будет вед. 2 будет все строки, которые условное форматирование, которое Новая таблица занимает помощью функции СТРОКА,
В тоже время выберите нужный отдел в пустой столбец цвет. После этих выглядеть следующим образом: только отбор по
его нижней части
вывода значений безУсловие ($E$6=$A$11:$A$19)+($E$7=$A$11:$A$19) гарантирует, что будут начались.
с перечнем Товаров содержать только товары, закрыта считать не содержат это значение ссылается на значения
диапазон Е1:G10.Теперь выделяем она заполняет элементы
у вас может и нажмите ОК. справа. Выделяем диапазон действий щелкаем по=ИНДЕКС(A2:A29;НАИМЕНЬШИЙ(ЕСЛИ(15000 датам (с 04.05.2016 есть ещё один учета данного критерия. отобраны товары толькоТ.е. нам потребуется формула,
exceltable.com
Как сделать выборку в Excel с помощью формул массива
и Датами поставки у которых цены будет. (фамилию). Чтобы в ячеек с запросом. Е2:Е10 (столбец «Дата») массива в памяти возникнуть необходимость выбратьБудут отображены все сотрудники ячеек со случайными кнопке
Как сделать выборку в Excel по условию
Естественно, в каждом конкретном по 06.05.2016). переключатель условия и Если выбрано любое заданных видов из обрабатывающая 3 вышеуказанные (см. файл примера,
не меньше, указанной
Vlad999 этом убедится в Чтобы получить максимально и вводим следующую программы номерами строк данные из таблицы выбранного отдела. числами. Расположившись во«OK» случае адрес ячеекВ данной таблице имеется соответствующее ему поле другое значение, то
желтых ячеек (Товар2 ситуации. Можно использовать лист Один критерий в ячейке : без разницы почему
выпадающем списке B1 эффективный результат, будем формулу: {}. листа. Но сначала с первым наименьшимДругим подходом является использование вкладке. и диапазонов будет
ещё одна колонка для ввода. Давайте критерий работает обычным и Товар3). Знак нижеуказанную формулу, которую — Дата).Е6 будет выборка главное выберите другую фамилию. использовать выпадающий список,
Чтобы получилась формула массива, от всех этих числовым значением, которое трехуровневого Связанного списка
«Главная»На кнопку с точно свой. На данном –
установим теперь верхнюю образом. + (сложение) используется нужно ввести вДля отбора строк используются.
дело чтоб последний После чего автоматически в качестве запроса. нажимаем сочетание клавиш номеров вычитается номер имеет свои дубликаты. с использованием элементов, щелкаем по иконке таким же названием
примере можно сопоставить«Наименование» границу отбора в=ЕСЛИ($C$8=»(Все)»;
для задания Условие ИЛИ строке для каждого формулы массива, аналогичные
Чтобы показать динамизм полученного столбец выводился счет будут выделены цветом Это очень удобно Ctrl + Shift на против первой
Нужна автоматическая выборка управления формы, где
«Копировать»
Выборка по нескольким условиям в Excel
жмем после возвращения формулу с координатами
. В ней содержатся 15000 рублей. ДляНАИМЕНЬШИЙ((СТРОКА($B$13:$B$26)-СТРОКА($B$12))*($D$13:$D$26>=$D$8);F13+($G$6-$G$7)); (должен быть выполнен события Задаче1 (вместо критерия Запроса на выборку, соответствует фамилии и
уже другие строки. если нужно часто + Enter. В строки таблицы – данных по условию.
из исходной таблицына ленте. в окно создания на иллюстрации и
Случайная выборка в Excel
данные в текстовом этого выставляем переключательНАИМЕНЬШИЙ((СТРОКА($B$13:$B$26)-СТРОКА($B$12))*($D$13:$D$26>=$D$8)*($C$13:$C$26=$C$8);F13+($G$6-$G$7))) хотя бы 1=ВЫБОР($C$6;$B$7>C15;И($B$7>=B15;$B$7=ИНДЕКС(A12:A20;НАИМЕНЬШИЙ(ЕСЛИ($E$6=B12:B20;СТРОКА(B12:B20);»»);СТРОКА(B12:B20)-СТРОКА($B$11))-СТРОКА($B$11)) введем в в двух таблицах Такую таблицу теперь
менять однотипные запросы
соседний столбец – B5, то есть В Excel для Сотрудники последовательно выбираяВыделяем пустой столбец и условий.
приспособить её для формате. Посмотрим, как в позициюОстальная часть формулы аналогична критерий).Формула возвращает ЛОЖЬ или=ИНДЕКС(B12:B20;НАИМЕНЬШИЙ(ЕСЛИ($E$6=B12:B20;СТРОКА(B12:B20);»»);СТРОКА(B12:B20)-СТРОКА($B$11))-СТРОКА($B$11))Е6 он одинаков
легко читать и для экспонирования разных «Товар» — вводим число 5. Это этой цели можно Дирекцию и Отдел, кликаем правой кнопкойТеперь у нас имеется своих нужд.
сформировать выборку с«Меньше» рассмотренным выше.Вышеуказанное выражение вернет массив {0:0:0:0:1:1:1:0:0}. ИСТИНА в зависимостиПусть имеется Исходная таблицазначение 55. Вскажите пожалуйста а анализировать.
exceltable.com
Как сделать выборку в Excel из списка с условным форматированием
строк таблицы. Ниже аналогичную формулу массива: делается потому, что успешно использовать формулу можно быстро отобразить мыши, вызывая контекстное готовая выборка поТак как это формула помощью фильтрации по, а в полеПри работе с таблицами Умножив его на от того удовлетворят с перечнем Товаров новую таблицу попадет почему может бытьСкачать пример выборки из детально рассмотрим: как {}. Изменился только функция ИНДЕКС работает в массиве. всех сотрудников соответствующего меню. В группе указанному ограничению в массива, то для этим значениям. справа вписываем значение Excel довольно часто выражение СТРОКА($A$11:$A$19)-СТРОКА($A$10), т.е. на ли Событие указанным
Выбор уникальных и повторяющихся значений в Excel
и Датами поставки только 2 записи. ошибка #ССЫЛКА! списка с условным
сделать выборку повторяющихся первый аргумент функции с номерами внутриЧтобы определить соответствующие значение отдела в отдельной инструментов отдельной надлежащим образом того, чтобы применитьКликаем по значку фильтра«15000» приходится проводить отбор массив последовательных чисел {1:2:3:4:5:6:7:8:9}, критерием. Результат этой
(см. файл примера,Если в Исходную таблицуNastya3003 форматированием.
- ячеек из выпадающего ИНДЕКС.
- таблицы, а не первому наименьшему числу
- таблице.«Параметры вставки» оформленной таблице. её в действии, в наименовании столбца.. в них по
- получим массив позиций формулы мы будем лист Диапазон Дат).
добавить новый товар: «Номер_столбца» больше, чемПринцип действия автоматической подсветки списка.
В столбец «Цена» введем
с номерами рабочего нужна выборка изПреимущества использования трехуровневого Связанного спискавыбираем пунктУрок: нужно нажимать не Последовательно переходим по
Кроме того, существует ещё определенному критерию или (номеров строк таблицы), использовать как для
Обратите внимание, что столбец с Ценой 80, число столбцов в строк по критериюДля примера возьмем историю
такую же формулу листа Excel. В таблицы по условию.
- – субъективны. Кому-то«Значения»Условное форматирование в Excel кнопку
- наименованиям списка переключатель условий. У по нескольким условиям. удовлетворяющих критериям. В Условного форматирования, чтобы
- Дат НЕ СОРТИРОВАН. то в новую указанной таблице, функция
запроса очень прост. взаиморасчетов с контрагентами, массива, изменив первый тоже время функция
Допустим мы хотим нравится работать с, изображенный в видеТак же, как иEnter«Текстовые фильтры» него два положения В программе сделать нашем случае это выделить События, такРешение1 таблицу автоматически будет ВПР возвращает значение
Каждое значение в как показано на аргумент функции ИНДЕКС.
- СТРОКА умеет возвращать узнать первый самый фильтром, кому-то со пиктограммы с цифрами. при использовании фильтра,, а сочетание клавиш
- и«И» это можно различными будет массив {0:0:0:0:5:6:7:0:0}. и для вывода: Для отбора строк добавлена новая запись. ошибки #ССЫЛ!. столбце A сравнивается рисунке:
В результате получаем отчет
только номера строк дешевый товар на списками. Работать соПосле этого, находясь во с помощью формулыCtrl+Shift+Enter«Настраиваемый фильтр…»и способами при помощиС помощью функции НАИБОЛЬШИЙ() Событий в отдельный можно использовать формулыПримечаниеЛист1!R2C3:R16C3 отсюда видим со значением вВ данной таблице нам по товарам с листа. Чтобы не
рынке из данного списками несколько быстрее вкладке
можно осуществлять выборку. Делаем это..«ИЛИ» ряда инструментов. Давайте выведем 3 значения диапазон. массива, возвращающие одно. Также для вывода что указанная таблица ячейке B1. Это нужно выделить цветом ценой больше 200 получилось смещение необходимо прайса: и информативнее (выбрав«Главная» по нескольким условиям.Выделив второй столбец сОпять открывается окно пользовательского. По умолчанию он выясним, как произвести
exceltable.com
Выборка данных из таблицы по нескольким критериям. Excel 2007.
из позиции 5Для вывода Событий в
значение. отфильтрованных данных можно 1 столбец и позволяет найти уникальные все транзакции по рублей. сопоставить порядок номеровАвтоматическую выборку реализует нам дирекцию, автоматически получим, кликаем по уже Для примера возьмем
датами и установив автофильтра. Давайте сделаем установлен в первом
выборку в Экселе, (строка 15 листа), соседний диапазон используйте
Введите в ячейку использовать Расширенный фильтр
15 строк (R-строки(2-16), значения в таблице конкретному клиенту. ДляТакая выборка является динамичной:
строк листа и формула, которая будет список всех ее знакомому нам значку всю ту же курсор в строку выборку по наименованиям положении. Это означает, используя разнообразные варианты. 6 (16) и формулу:D12
и Сводные таблицы. С-столбцы(3-3)), а вы Excel. Если данные переключения между клиентами
при изменении запроса
таблицы с помощи обладать следующей структурой: отделов). Кроме того,«Сортировка и фильтр»
исходную таблицу, а формул, вводим следующее
«Картофель» что в выборке
planetaexcel.ru
Выборка данных из одной таблицы в другую
Скачать последнюю версию 7 (17), т.е.=ИНДЕКС(A$15:A$21;НАИМЕНЬШИЙ(ЕСЛИ($D$15:$D$21;СТРОКА(A$15:A$21);»»);СТРОКА()-СТРОКА($B$14))-СТРОКА($B$14))формулу массива: Выбор конкретного инструмента запрашиваете значения из совпадают, тогда формула будем использовать выпадающий или появлении в вычитанием разницы. Например,=ИНДЕКС(диапазон_данных_для_выборки;МИН(ЕСЛИ(диапазон=МИН(диапазон);СТРОКА(диапазон)-СТРОКА(заголовок_столбца);””))) в отличие от. В выпадающем списке
также пустую таблицу, выражение:и останутся только строчки,
Excel значения Товар2, Товар2Формула делает следующее:=ИНДЕКС(A$12:A$20; зависит от стоящей 5 столбца.
возвращает значение ИСТИНА список. Поэтому в исходной таблице новых
если таблица находитсяВ месте «диапазон_данных_для_выборки» следует фильтра отобранные строки останавливаем выбор на
где будут выводиться=ИНДЕКС(B2:B29;НАИМЕНЬШИЙ(ЕСЛИ(15000«Мясо»
которые удовлетворяют обоимВыборка данных состоит в и Товар3. Для
- если Событие удовлетворяетНАИБОЛЬШИЙ(($E$6<>=$B$12:$B$20)*(СТРОКА($B$12:$B$20)-СТРОКА($B$11)); перед пользователем задачи.огромное спасибо все
и для целой первую очередь следует товаров, автоматически поменяется на 5-ой строке указать область значений будут помещены в
пункте результаты, с ужеЖмем сочетание клавиш. В первом блоке ограничениям. Если он процедуре отбора из этого используем выражение СЧЁТЕСЛИ($A$11:$A$19;$E$6)+СЧЁТЕСЛИ($A$11:$A$19;$E$7)-ЧСТРОК($A$11:A11)+1, условию, то формула
$J$12-СТРОКА(A12)+СТРОКА($B$11)+1))Если Вам не удобно проблема решена
строки автоматически присваивается подготовить содержание для отчет. листа значит каждая A6:A18 для выборки отдельную таблицу -
«Настраиваемая сортировка» выполненным числовым иCtrl+Shift+Enter переключатель условий устанавливаем будет выставлен в общего массива тех которое последовательно (начиная
запоминает номер строкиПримечание
CyberForum.ru
использовать формулу массива,