Магия таблиц. 100+ приемов ускорения работы в Excel (и немного в Google Таблицах) - Ренат Шагабутдинов
Функции для поиска и извлечения значений
Файл с примерами. "Функции поиска"
ФУНКЦИЯ ВПР / VLOOKUP
Функция ВПР / VLOOKUP (вертикальный просмотр) нужна, чтобы связать несколько таблиц — подтянуть данные из одной в другую по какому-то ключу (например, названию товара или бренда, фамилии сотрудника или клиента, номеру транзакции):
=ВПР (что ищем; таблица с данными, где "что ищем" должно быть в первом столбце; номер столбца таблицы, из которого нужны данные; [интервальный просмотр])
У нее есть два режима работы — интервальный просмотр и точный поиск.
Интервальный просмотр — это поиск интервала, в который попадает число. Если у вас прогрессивная шкала налога или скидок, если нужно конвертировать оценку из одной системы в другую и так далее, то используется именно этот режим. Для интервального просмотра нужно пропустить последний аргумент ВПР или задать его равным единице (или ИСТИНА).
В большинстве случаев мы связываем таблицы по текстовым ключам, в таком случае нужно обязательно явным образом указывать последний аргумент «интервальный_просмотр» (range_lookup) равным нулю (или ЛОЖЬ / FALSE). Только тогда функция будет корректно работать с текстовыми значениями.
ФУНКЦИИ ПОИСКПОЗ / MATCH И ИНДЕКС / INDEX
У ВПР есть существенный недостаток: ключ (искомое значение) обязан быть в первом столбце таблицы с данными. Все, что левее этого столбца, через ВПР подтянуть невозможно.
В реальных условиях структура таблиц бывает разной и не всегда возможно изменить порядок столбцов. Поэтому важно уметь работать с любой структурой.
Если у вас есть функция ПРОСМОТРX / XLOOKUP (Excel 2021, Microsoft 365), то пользуйтесь ею вместо ВПР: она гораздо проще по синтаксису и не имеет этого ограничения (о ней ниже).
Если ее нет (у вас Google Таблицы, Excel 2019 или ранее), то пользуйтесь сочетанием ИНДЕКС + ПОИСКПОЗ.
Функция ПОИСКПОЗ / MATCH определяет порядковый номер значения в диапазоне. Ее синтаксис:
=ПОИСКПОЗ (что ищем; где ищем; 0)
На выходе — число (номер строки или столбца в рамках диапазона, в котором находится искомое значение).
ИНДЕКС / INDEX выполняет другую задачу — возвращает элемент по его номеру:
=ИНДЕКС(диапазон, из которого нужны данные; порядковый номер элемента)
Соответственно, мы можем определить номер строки, в котором находится искомое значение, с помощью ПОИСКПОЗ. А затем подставить этот номер в ИНДЕКС на место второго аргумента, чтобы получить данные из любого нужного нам столбца.
Получается следующая конструкция:
=ИНДЕКС(диапазон, из которого нужны данные; ПОИСКПОЗ (что ищем; где ищем; 0))
ДВУМЕРНЫЙ ПОИСК: ИНДЕКС + ПОИСКПОЗ
Файл с примером: Двумерный поиск.xlsx
Функция ИНДЕКС работает и с двумерными массивами. Если аргумент — это диапазон (или таблица), то можно извлекать элемент по номерам строки и столбца.
А эти самые номера мы можем искать с помощью функции ПОИСКПОЗ / MATCH.
В общем виде структура формулы будет такой:
=ИНДЕКС(диапазон;ПОИСКПОЗ для поиска номера строки;ПОИСКПОЗ для поиска номера столбца;0))
Более подробно:
=ИНДЕКС(диапазон;ПОИСКПОЗ(значение, которое ищем в столбце; столбец для поиска;0);ПОИСКПОЗ(значение, которое ищем в строке; строка для поиска;0))
Давайте рассмотрим пример. Допустим, по двум оценкам поведенческих и профессиональных компетенций нужно выставить комплексную оценку.
То есть если Лемур получает оценку профессиональных компетенций A и поведенческих — C, то его комплексная оценка — B.
Вот так будет выглядеть формула: мы ищем каждую из двух оценок в ее строке (профессиональные) и столбце (поведенческие компетенции) с помощью функций ПОИСКПОЗ, и их позиции выступают в качестве номеров строки и столбца в функции ИНДЕКС.
ФУНКЦИЯ ПРОСМОТРX / XLOOKUP
ПРОСМОТРX / XLOOKUP — новая функция, которой нет в версиях Excel до 2019 включительно, она доступна подписчикам Office 365, получающим обновления, и в Excel 2021.
В 2022 году она также появилась и в Google Таблицах.
У нее гораздо более простой синтаксис. Несмотря на большое количество аргументов, обязательными являются всего три:
=ПРОСМОТРX(что ищем; где ищем; диапазон, из которого нужны данные)
Не нужно указывать номер столбца, не нужно помнить про интервальный просмотр: в таком варианте ПРОСМОТРX будет искать и возвращать данные из нужных столбцов при их любом порядке.
ПРОСМОТРX по умолчанию ищет точное совпадение, в отличие от ВПР и ПОИСКПОЗ, у которых нужно указывать последний аргумент равным нулю при работе с текстом. Поиск ведется сверху вниз. По умолчанию здесь, в отличие от ВПР, символы подстановки (* и?) не работают.
Если нужны более тонкие настройки, у ПРОСМОТРX есть необязательные аргументы:
[если_ничего_не_найдено](if_not_found) — что возвращать в случае ошибки #Н/Д (когда ничего не найдено);
[режим_сопоставления](match_mode) — по умолчанию 0, то есть точный поиск, так что можно пропускать при работе с текстом, но если нужно использовать символы подстановки, то этот аргумент должен быть равен 2, −1 и 1 для интервального поиска (ближайшего числа);
[режим_поиска](search_mode) — по умолчанию 1, то есть поиск сверху вниз, −1 для поиска снизу вверх; значения -2 и 2 — это двоичный поиск, который был более быстрым до 2018 года, а после потерял актуальность, когда команда Excel обновила алгоритм поиска; кроме того, у него есть недостаток — значения должны быть отсортированы.
«Обычную» функцию ПРОСМОТР / LOOKUP (без X, из старых версий Excel) использовать не рекомендую. Она требует обязательной сортировки таблицы по алфавиту и не имеет режима точного поиска: если у вас будет ошибка в ключе, она все равно выдаст результат (неправильный), а не просигнализирует ошибкой #Н/Д, как ВПР и ПОИСКПОЗ.
ПРОСМОТРX может заменить и ГПР / HLOOKUP — функция будет работать и с горизонтальными массивами.
НЕКОТОРЫЕ АСПЕКТЫ РАБОТЫ С ФУНКЦИЯМИ ПОИСКА
• ВПР и ПОИСКПОЗ (в режиме поиска текста при последнем аргументе = 0) ищут сверху вниз, то есть если искомое значение повторяется несколько раз, то будет найдено первое вхождение.
• Все функции (ВПР, ПОИСКПОЗ, ПРОСМОТРX) ищут текст без учета регистра — "ipad" и "IPAD" для них являются одинаковыми значениями.
• В функциях ВПР и ПОИСКОЗ можно использовать символы подстановки — звездочку (*) и знак вопроса (?). Это не отменяет последнего аргумента, равного нулю, если вы ищете текст. Просто ваш запрос уже является не точным текстом, а текстом с символами подстановки. В любом случае ВПР будет искать первое точное совпадение с тем шаблоном, что задан в первом аргументе (например, если будет текст "ipad*" в качестве искомого значения, то ВПР найдет первую ячейку, начинающуюся с "ipad").
В функции ПРОСМОТРX символы подстановки тоже возможны, но для их