Skip to content
Функция ВПР – одна из самых популярных, когда нужно найти и извлечь из таблицы какие-либо данные. Но при этом она имеет один существенный недостаток. Поиск она производит в крайнем левом столбце, а извлекать значения можно только их тех, которые находятся правее. А как же быть, если наш ключевой столбец находится в середине таблицы, а данные нужно извлечь из левой ее части? Как сделать «левый» ВПР в таблице Excel?
Мы предложим вам несколько способов извлечения значений, находящихся слева от диапазона поиска. А вот какой из них будет для вас понятнее и удобнее – решайте сами.
- Использование дополнительного столбца
- Виртуальная перестановка столбцов в таблице
- Левый ВПР при помощи ИНДЕКС + ПОИСКПОЗ
- ВПР+СУММПРОИЗВ для извлечения чисел
- Специальный инструмент для ВПР
Итак, у нас есть данные о продажах. Необходимо по коду заказа вывести наименование товара и его стоимость. При этом колонка с кодом находится в середине таблицы, а наименования – левее него. Такой случай как раз и принято называть «левый (или обратный) ВПР».
Получить стоимость по нужному заказу не представляет труда, и с такой задачей ВПР прекрасно справляется. А вот для того, чтобы вывести в С6 название товара, стандартных возможностей этой функции будет недостаточно. Ведь она «работает только направо».
1. Дополнительный столбец.
Создадим дополнительный столбец с названиями товаров справа от ключевого. Для этого в ячейке H10 запишем формулу
=B10
Скопируем ее вниз и получим новый список, расположенный справа от диапазона поиска.Точнее говоря, это точная копия.
Формула в С6 тогда будет такова:
=ВПР(C2;C9:H25;6;0)
6 — это порядковый номер новой колонки с названиями напитков, который мы как бы переместили (продублировали) слева на правую сторону. Отсчет мы начинаем с С.
Если это слишком портит вид вашей таблицы и попадает в распечатку, можете ее скрыть. Для этого щелкните на букве H правой кнопкой мыши и из выпадающего меню выберите «Скрыть». На расчеты это никак не повлияет.
2. Виртуальная перестановка данных.
В отличие от предыдущего способа, где мы реально меняли расположение данных, здесь мы сделаем это виртуально.
Для этого нам понадобится функция ВЫБОР (CHOOSE в английском варианте). Она позволяет выбрать данные из какого-то массива по их индексу. Проще говоря, по порядковому номеру колонки.
Для поиска напитка используем формулу:
=ВПР(C2;ВЫБОР({1;2};C10:C25;B10:B25);2;0)
Вся хитрость состоит в указании массива данных для поиска. Мы выбираем два диапазона: С10:С25 – с кодами (первый), и В10:В25 – с напитками (второй). И из них при помощи ВЫБОР создаем новую виртуальную таблицу, с которой и будем работать.
Конструкция в виде массива {1;2} показывает, что мы берем сначала первый указанный диапазон C10:C25, потом – второй B10:B25, и формируем из них виртуальную таблицу с двумя колонками. В ней мы и производим поиск по первой и извлекаем значения – из второй. И при этом не важно, где они реально расположены на листе Excel. ВПР работает с виртуальным массивом, который мы сами создали.
3. Левый ВПР при помощи ИНДЕКС + ПОИСКПОЗ.
И снова – об альтернативах функции ВПР, которые часто оказываются ничем не хуже, а даже и лучше.
Напомним, что функция ИНДЕКС (INDEX) позволяет извлечь элемент из перечня по его порядковому номеру. И этот номер нам поможет определить ПОИСКПОЗ (или MATCH).
Формула «обратного ВПР» выглядит теперь так:
=ИНДЕКС(B10:B25;ПОИСКПОЗ(C2;C10:C25;0))
Давайте подробно разберем последовательность вычислений. В начале используем ПОИСКПОЗ(что_ищем; где_ищем; тип_поиска). Тип поиска – 0, то есть точное совпадение. В диапазоне C10:C25 мы ищем нужное нам значение, указанное в С2, и получаем его порядковый номер. В нашем случае это 2.
На этой же позиции, то есть в этой же второй строке нашего диапазона, находится и нужный нам напиток. При помощи ИНДЕКС из последовательности В10:В25 извлекаем второй по счету элемент. Задача выполнена.
4. Извлекаем из столбца слева числовые значения.
Этот «обратный ВПР» подходит только для чисел. Предположим, нам нужно подсчитать количество литров в определенном заказе. Но объем также находится левее, чем расположен его код.
Используем ВПР в комбинации с СУММПРОИЗВ (SUMPRODUCT).
Наша итоговая формула:
=СУММПРОИЗВ((ВПР(C2;D10:D25;1;0)=D10:D25)*C10:C25)
Давайте пошагово разберем все действия.
Сразу вспомним важную особенность СУММПРОИЗВ: она работает с предложенным ей диапазоном как с массивом, то есть последовательно перебирает все его элементы от начала до конца.
Вначале ВПР(C2;D10:D25;1;0) позволяет нам найти в перечне заказов интересующий нас и вывести его же (порядковый номер колонки 1, то есть, что ищем, то и возвращаем). Если будет получена ошибка, то она автоматически в нашем случае функцией СУММПРОИЗВ преобразуется в ноль. Сравниваем извлеченное с соответствующим значением из перечня кодов при помощи равенства: ВПР(C2;D10:D25;1;0)=D10:D25
В случае соответствия получаем ИСТИНА (что соответствует 1), в противном случае – ЛОЖЬ (или 0).
В итоге получаем виртуальный набор цифр, состоящий из 0 и 1. Поскольку коды у нас не повторяются, единица будет в этом списке всего одна. Перемножаем этот набор нулей и единиц с соответствующими величинами объема C10:C25. Все произведения дадут нам 0, кроме одного – соответствующего нашему, где была 1. Общая сумма этих произведений и даст нам искомый объем по нужной позиции.
И еще один вариант левого ВПР с числовыми значениями. На этот раз используем функцию СУММЕСЛИ (SUMIF).
Она позволяет находить сумму в зависимости от выполнения определенных условий. Смотрите пример.
Формула расчета:
=СУММЕСЛИ(D10:D25;C2;C10:C25)
Синтаксис здесь такой:
СУММЕСЛИ(диапазон_просмотра; критерий; что_суммируем).
Находим сумму чисел из диапазона C10:C25, соответствующих тем ячейкам из D10:D25, которые равны С2.
Важное ограничение – коды не должны дублироваться, иначе получим сумму сразу нескольких позиций!
Специальные инструменты для поиска и подстановки в Excel.
Если написание формул представляет для вас некоторую сложность, вы можете попробовать надстройку Мастер ВПР, которая является составной частью Ultimate Suite for Excel.
Как работает Мастер ВПР, в том числе как с его помощью можно сделать «левый» ВПР, вы можете прочитать здесь в нашем блоге.
А сейчас мы остановимся более подробно еще на одном интересном инструменте.
Объединить две таблицы — альтернатива ВПР в Excel без формул.
Если ваши файлы Excel чрезвычайно велики и сложны, а выполнить расчеты нужно быстро, и вы ищете кого-то, кто может протянуть вам руку помощи, то попробуйте Мастер объединения таблиц .
Этот инструмент является простой и наглядной альтернативой функции ВПР в Excel. Работает он следующим образом:
- Выберите свою основную таблицу. Предположим, это таблица с данными о продажах.
- Выберите таблицу поиска. Это может быть список менеджеров, закрепленных за отдельными покупателями.
- Выберите один или несколько общих столбцов в качестве уникальных идентификаторов. В нашем случае это будет наименование заказчика.
- Укажите, какие столбцы нужно обновить. В данном случае – ничего. Просто пропускаем этот шаг.
- При желании выберите столбцы, которые нужно добавить. Добавим в основную таблицу колонку с фамилиями менеджеров, которые работают с конкретным заказчиком. При этом совершенно не важно, где находятся эти столбцы для добавления — слева или справа от столбца поиска.
- На следующем шаге вы можете указать дополнительные опции объединения – выделение цветом добавленного, добавление несовпадающих значений в конец основной таблицы, вставка столбца статуса и др. Но в нашем случае в этом нет необходимости. Ведь мы просто хотим найти и добавить в основную таблицу фамилии менеджеров. Поэтому просто нажимаем Finish. Теперь дайте Мастеру объединения таблиц несколько секунд для обработки… и наслаждайтесь результатами
Согласитесь, это именно то, что делает функция ВПР — выбирает из таблицы поиска значения, соответствующие данным из основной таблицы. Но в данном случае мы прекрасно обошлись без формул.
Более подробную информацию об инструменте Merge Tables вы можете посмотреть здесь.
Дополнительные материалы о функции ВПР:
Поиск последнего вхождения (инвертированный ВПР)
Все классические функции поиска и подстановки типа ВПР (VLOOKUP), ГПР (HLOOKUP), ПОИСКПОЗ (MATCH) и им подобные имеют одну важную особенность — они ищут от начала к концу, т.е. слева-направо или сверху-вниз по исходным данным. Как только находится первое подходящее совпадение — поиск останавливается и найденным оказывается только первое вхождение нужного нам элемента.
Что же делать, если нам требуется найти не первое, а последнее вхождение? Например, последнюю сделку по клиенту, последний платёж, самую свежую заявку и т.д.?
Способ 1. Поиск последней строки формулой массива
Если в исходной таблице нет столбца с датой или порядковым номером строки (заказа, платежа…), то наша задача сводится, по сути, к поиску последней строки, удовлетворяющей заданному условию. Реализовать подобное можно вот такой формулой массива:
Здесь:
- Функция ЕСЛИ (IF) проверяет по очереди все ячейки в столбце Клиент и выводит номер строки, если в ней лежит нужное нам имя. Номер строки на листе нам даёт функция СТРОКА (ROW), но поскольку нам нужен номер строки в таблице, то дополнительно приходится вычитать 1, т.к. у нас в таблице есть шапка.
- Затем функция МАКС (MAX) выбирает из сформированного набора номеров строк максимальное значение, т.е. номер самой последней строки клиента.
- Функция ИНДЕКС (INDEX) выдаёт содержимое ячейки с найденным последним номером из любого другого требуемого столбца таблицы (Код заказа).
Всё это нужно вводить как формулу массива, т.е.:
- В Office 365 с последними установленными обновлениями и поддержкой динамических массивов — можно просто жать Enter.
- Во всех остальных версиях после ввода формулы придется нажимать сочетание клавиш Ctrl+Shift+Enter, что автоматически добавит к ней фигурные скобки в строке формул.
Способ 2. Обратный поиск новой функцией ПРОСМОТРХ
Я уже писал большую статью с видео про новую функцию ПРОСМОТРХ (XLOOKUP), которая появилась в последних версиях Office на замену старушке ВПР (VLOOKUP). При помощи ПРОСМОТРХ наша задача решается совершенно элементарно, т.к. для этой функции (в отличие от ВПР) можно явно задавать направление поиска: сверху-вниз или снизу-вверх — за это отвечает её последний аргумент (-1):
Способ 3. Поиск строки с последней датой
Если в исходных данных у нас есть столбец с порядковым номером или датой, играющей аналогичную роль, то задача видоизменяется — нам требуется найти уже не последнюю (самую нижнюю) строку с совпадением, а строку с самой поздней (максимальной) датой.
Как это сделать с помощью классических функций я уже подробно разбирал, а теперь давайте попробуем использовать мощь новых функций динамических массивов. Исходную таблицу для пущей красоты и удобства тоже заранее преобразуем в «умную» с помощью сочетания клавиш Ctrl+T или команды Главная — Форматировать как таблицу (Home — Format as Table).
С их помощью этой «убойной парочки» наша задача решается весьма изящно:
Здесь:
- Сначала функция ФИЛЬТР (FILTER) отбирает только те строки из нашей таблицы, где в столбце Клиент — нужное нам имя.
- Потом функция СОРТ (SORT) сортирует отобранные строки по убыванию даты, чтобы самая последняя сделка оказалась сверху.
- Функция ИНДЕКС (INDEX) извлекает первую строку, т.е. выдает нужную нам последнюю сделку.
- И, наконец, внешняя функция ФИЛЬТР убирает из результатов лишние 1-й и 3-й столбцы (Код заказа и Клиент) и оставляет только дату и сумму. Для этого используется массив констант {0;1;0;1}, определяющий какие именно столбцы мы хотим (1) или не хотим (0) выводить.
Способ 4. Поиск последнего совпадения в Power Query
Ну, и для полноты картины, давайте рассмотрим вариант решения нашей задачи обратного поиска с помощью надстройки Power Query. С её помощью всё решается очень быстро и красиво.
1. Преобразуем нашу исходную таблицу в «умную» с помощью сочетания клавиш Ctrl+T или команды Главная — Форматировать как таблицу (Home — Format as Table).
2. Загружаем её в Power Query кнопкой Из таблицы/диапазона на вкладке Данные (Data — From Table/Range).
3. Сортируем (через выпадающий список фильтра в шапке) нашу таблицу по убыванию даты, чтобы самые последние сделки оказались сверху.
4. На вкладке Преобразование выбираем команду Группировать по (Transform — Group By) и задаем группировку по клиентам, а в качестве агрегирующей функции выбираем вариант Все строки (All rows). Назвать новый столбец можно как угодно — например Подробности.
После группировки получим список уникальных имен наших клиентов и в столбце Подробности — таблицы со всеми сделками каждого из них, где первой строкой будет идти самая последняя сделка, которая нам и нужна:
5. Добавляем новый вычисляемый столбец кнопкой Настраиваемый столбец на вкладке Добавить столбец (Add column — Add custom column) и вводим следующую формулу:
Здесь Подробности — это столбец, откуда мы берем таблицы по клиентам, а {0} — это номер строки, которую мы хотим извлечь (нумерация строк в Power Query начинается с нуля). Получаем столбец с записями (Record), где каждая запись — первая строка из каждой таблицы:
Осталось развернуть содержимое всех записей кнопкой с двойными стрелками в шапке столбца Последняя сделка, выбрав нужные столбцы:
… и удалить потом ненужный более столбец Подробности щёлкнув по его заголовку правой кнопкой мыши — Удалить столбцы (Remove columns).
После выгрузки результатов на лист через Главная — Закрыть и загрузить — Закрыть и загрузить в (Home — Close & Load — Close & Load to…) получим вот такую симпатичную таблицу со списком последних сделок, как и хотели:
При изменении исходных данных результаты нужно не забыть обновить, щёлкнув по ним правой кнопкой мыши — команда Обновить (Refresh) или сочетанием клавиш Ctrl+Alt+F5.
Ссылки по теме
- Функция ПРОСМОТРХ — наследник ВПР
- Как использовать новые функции динамических массивов СОРТ, ФИЛЬТР и УНИК
- Поиск последней непустой ячейки в строке или столбце функцией ПРОСМОТР
Наверное самая популярная функция из продвинутых в Excel — это ВПР. Многие знают и часто пользуются. Но при этом у нее есть два значительных недостатка, например, как сделать «Левый ВПР «. Я использую сам ВПР, только если нужно сделать что-то быстро. В файлах для «регулярного» использования я делаю конструкцию ИНДЕКС и ПОИСКПОЗ. Чем она лучше?
- При добавлении столбца в таблицу данных не нужно менять номер столбца в самой формуле (как в ВПР). Столбец подвинется автоматом
- Можно сделать ВПР наоборот, т.е. сделать выбор из таблицы справа-налево. В ВПР первый столбец всегда должен быть для поиска.
Как все это сделать, читаем ниже
Вводная информация
Использовать буду пример из этой статьи. Для того, чтобы лучше понять применение этой конструкции в сравнение с ВПР:
=ИНДЕКС($G:$G;ПОИСКПОЗ($J:$J;$H:$H;0);1)
Как просто заполнить, если видишь формулу первый раз?
Сперва, определитесь, где таблица изначальная, а где для получения данных! Поэтапно, что заполнять.
- Вставляем формулу в нужную область таблицы
- На место $G:$G поставьте те ячейки, в которых должно быть найдено значение, и соответственно, должно появиться в результате. Мы ищем фамилию, значит ищите столбец с фамилиями в начальной таблице.
- Замените $J:$J на в зависимости, от которых должны вернуться значения в ячейку. Нам нужны Фамилии в зависимости от ТС — вставляем те ТС, около которых должны появиться значения.
- Вместо $H:$H заполняем столбец, в котором нужно найти соответствующее значение. Т.е. мы ищем Фамилию по ТС, значит вставляем столбец с ТС в изначальной таблице.
Если вам интересно, для чего в формуле знаки $ читайте здесь
ИНДЕКС и ПОИСКПОЗ. Что это за функции?
ИНДЕКС и ПОИСКПОЗ — очень сильные функции, которые в комбинации с другими дают отличный результат.
ИНДЕКС
=ИНДЕКС(массив; номер_строки; номер_столбца)
Возвращает значение на пересечении указанной строки и столбца определенного диапазона. Т.е. изначально она работает с двумерными массивами.
Выбрав массив данных J1:K4 и задав номер строки и столбца равным двум, мы получили соответствующее значение.
Посмотрев на изначальную формулу
=ИНДЕКС($G:$G;ПОИСКПОЗ($J:$J;$H:$H;0);1)
Мы увидим, что вместо второго аргумента (номер строки) у нас формула ПОИСКПОЗ. Что тут она делает?
ПОИСКПОЗ — это поиск по значению. Функция ищет заданное значение в строке или в столбце и возвращает ее порядковый номер (от начала диапазона). Т.е. во втором аргументе функции ИНДЕКС мы находим нужный нам номер ТС, получаем его номер, например 2.
И уже в одномерном массиве $G:$G находим ячейку с номером строки = 2. Так это будет работать для каждой ячейки в столбце J.
Вот так вроде бы не очень сложная конструкция, но, как я писал выше, очень эффективная. Т.к. вам не придется постоянно менять номер искомого значения, как в ВПР и можно делать поиск как направо, так и налево
Пишите комментарии, если вопросы остались.
Пример, как всегда!
Как правило, функция ВПР ищет значения слева направо в таблице массивов и требует, чтобы значение поиска оставалось слева от целевого значения. Но иногда вы можете знать целевое значение и захотеть узнать значение поиска в обратном порядке. Следовательно, вам необходимо выполнить просмотр в обратном порядке в Excel. Как это решить? Не принимайте это близко к сердцу! Есть несколько способов легко справиться с этой проблемой!
- Обратный просмотр в обратном порядке с формулой
- Обратная ВПР справа налево в Excel
- Обратная ВПР снизу вверх в Excel
Обратный просмотр в обратном порядке с формулой
Предположим, у вас есть таблица, как показано на скриншоте ниже. И теперь вы знаете количество фруктов в столбце Amount, и вам нужно выполнить обратный просмотр и вернуть точное имя фрукта в столбце Fruit. Пожалуйста, следуйте инструкциям ниже, чтобы это сделать.
Введите формулу =VLOOKUP(G2,CHOOSE({1,2},D1:D24,A1:A24),2,0) в пустую ячейку и нажмите Ctrl + Shift + Enter ключи одновременно. И тогда вы получите точное название фрукта. Смотрите скриншот:
Ноты:
- В приведенной выше формуле G2 — это значение поиска, D1: D24 — это столбец, в котором вы будете искать значение поиска, A1: A24 — это столбец, в котором вы будете искать целевое значение.
- Вы также можете применить формулу =INDEX(A2:A24,MATCH(G2,D2:D24,0),1) (A2: A24 — это столбец, в котором вы будете искать целевое значение, G2 — это значение поиска, D2: D24 — это столбец, в котором вы будете искать значение поиска.).
Обратная ВПР справа налево в Excel
Функция Excel VLOOKUP требует поискового значения в крайнем левом столбце и возвращает значения в правых столбцах. Здесь этот метод представит ПОСМОТРЕТЬ справа налево особенность Kutools for Excel чтобы изменить порядок ВПР и искать значения справа налево.
Например, у вас есть фруктовый стол, как показано на скриншоте ниже. Теперь вы хотите узнать дату торговли грушей, вы можете сделать следующее:
1. Нажмите Кутулс > Супер ПОСМОТРЕТЬ > ПОСМОТРЕТЬ справа налево.
Kutools for Excel— Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная 60-дневная пробная версия, кредитная карта не требуется! Get It Now
2. В диалоговом окне ПРОСМОТР справа налево сделайте следующее:
(1) В Значения поиска поле, выберите диапазон значений поиска;
(2) В Выходной диапазон поле, выберите диапазон, в который вы поместите возвращаемые значения;
(3) В Диапазон данных выберите таблицу фруктов, в которой вы будете искать значения (советы: пожалуйста, проверьте У моих данных есть заголовки вариант на основе вашего диапазона данных);
(4) В Ключевой столбец поле, выберите столбец, содержащий значения поиска;
(5) В Столбец возврата выберите столбец, содержащий возвращенные значения.
3, Нажмите OK кнопку.
Теперь дата торговли Грушей определена и помещена в ячейку вывода.
Обратная ВПР снизу вверх в Excel
Функция ВПР в Excel обычно просматривает значения сверху вниз и возвращает первое совпавшее значение. Теперь с функцией ПРОСМОТР снизу вверх Kutools for Excel, вы можете искать значения снизу вверх и возвращать первое совпавшее значение.
Kutools for Excel— Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная 60-дневная пробная версия, кредитная карта не требуется! Get It Now
1. Нажмите Кутулс > Супер ПОСМОТРЕТЬ > ПОСМОТРЕТЬ снизу вверх для включения функции.
2. В диалоговом окне ПРОСМОТР снизу вверх сделайте следующее:
(1) В Значения поиска поле, выберите диапазон значений поиска;
(2) В Выходной диапазон поле, выберите диапазон, в который вы поместите возвращаемые значения;
(3) В Диапазон данных выберите диапазон, из которого вы будете искать значения (советы: пожалуйста, проверьте У моих данных есть заголовки вариант на основе вашего диапазона данных);
(4) В Ключевой столбец поле, выберите столбец, содержащий значения поиска;
(5) В Столбец возврата выберите столбец, содержащий возвращенные значения.
3, Нажмите OK кнопку.
Теперь он ищет указанные значения снизу вверх в диапазоне данных и возвращает первое совпадающее значение.
Статьи по теме:
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (0)
Оценок пока нет. Оцените первым!
Любой пользователь, который работает с функцией ВПР (LOOKUP), через некоторое время понимает, что не очень удобно работать с функцией, которая производит поиск только справа от столбца, в котором находится искомое значение. Функции ПОИСКПОЗ (MATCH) и ИНДЕКС (INDEX) могут разрешить эту проблему, но в целом формула будет намного длиннее и труднее по сравнению с более простой ВПР.
Пользовательская надстройка rLOOKUP работает как ВПР, но позволяет производить обратный поиск. Функция просто использует методы указательным и матч в VBA. Она предоставляется в Excel надстройка для простоты использования.
Скачать надстройку
Загрузите надстройку: .xlam файл (15 Кб).
Сохраните файл на компьютере и установить его в Excel, выбрав Файл -> Параметры -> Надстройки. Нажмите на кнопку Перейти …, в открывшемся окне выберите Обзор. Выберите сохраненный файл и нажмите кнопку OK, чтобы завершить установку. После установки появится сообщение «Reverse_Lookup» в списке доступных надстроек и функция rLOOKUP становится доступной во всех книгах.
После установки надстройки функцию rLOOKUP можна найти Формулы -> Вставить функцию -> Категория: Определенные пользователем ->
rLOOKUP.
Описание функции
Аргументы для функции rLOOKUP такие же, как и для функции ВПР, см. скриншоты ниже. Чтобы выполнить обратный поиск, просто введите отрицательное число в аргумент ‘Col_Index_Num’ (смотри примеры ниже). Формула будет Lookup в направлении влево.
Одно из различий между этими двумя функциями, что если Интервальный_просмотр опущен в ВПР, то результата точно не будет. Однако обратное верно для rLOOKUP, по умолчанию эта функция возвращает точное значение. Опять же, это потому, что чаще всего пользователи хотят получить значение в результате поиска. Значения ошибок, возвращаемые функцией rLOOKUP аналогичны тем, которые возвращает ВПР.
Пример функции
Следующие данные Excel показывает адреса офисов, имена сотрудников и должность.
Для ответа на этот запрос «Кто работает офисе B43?»мы можем использовать функцию ВПР:
ВПР ( «B43»; A1:C6;2; ЛОЖЬ) возвращает «Dilbert».
Тем не менее, если мы хотим знать, «Где находится офис Дилберта?», то ВПР не будет работать. Вот тут пригодится функция rLOOKUP:
rLOOKUP ( «Dilbert»; A1:B6, -2).
Обратите внимание, в аргументах номер столбца указывается отрицательным число -2, что позволяет производить поиск в колонке слева.
Вообще, функция работает в обоих направлениях:
rLOOKUP ( «B43»;A1:C6;2) возвращает «Dilbert» и
rLOOKUP ( «Dilbert»; A1:B6; -2) возвращает «B43».
Другие примеры приведены ниже:
Не забудьте сначала установить надстройку, в противном случае будет возвращаться ошибка #NAME?.
Как работает функция
Функция использует функции ПОИСКПОЗ (MATCH) и ИНДЕКС (INDEX) для запуска обратного поиска.
Исходный код для функции смотрите ниже.
Function rLOOKUP(Lookup_value, Table_array As Range, Col_index_num As Integer, Optional Range_lookup As Boolean)
‘
‘Custom function that allows forward and reverse vertical lookups
‘Works like VLookup for positive Col_index_num, and does reverse lookups for negative Col_index_num
‘Unlike VLOOKUP, it looks for the exact value by default
‘
‘Nitin Mehta, www.Engineers-Excel.com
‘
‘
Dim Source_Col As Range, Dest_Col_num As Integer
‘The Source Column is the Column where the Lookup_value is located. It is the leftmost column if
‘Col_index_number is positive. If Col_index_number is negative, it is the rightmost column
Set Source_Col = Table_array.Columns(IIf(Col_index_num > 0, 1, Table_array.Columns.Count))
‘Dest_col_num is the column number within the Table_array range from where we have to pick up the entry against the Lookup_value
Dest_Col_num = IIf(Col_index_num > 0, Col_index_num, Table_array.Columns.Count + Col_index_num + 1)
‘Use MATCH and INDEX functions for the Lookup.
‘Use of CVErr(xlErrRef) suggested by Brian Canes
rLOOKUP = IIf(Dest_Col_num < 1, CVErr(xlErrRef), Application.Index(Table_array, Application.Match(Lookup_value, Source_Col, Range_lookup), Dest_Col_num))
End Function
Поделиться:
Оставьте свой комментарий!
- Комментарий в ВКонтакте
Добавить комментарий
< Предыдущая | Следующая > |
---|