Excel Formulas Academy · Урок

Поиск последнего совпадающего значения

Возвращайте самое позднее совпадение с помощью методов обратного поиска.

Урок 2 из 413 шагов

«Поиск последнего совпадающего значения» — бесплатный урок Excel Formulas Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Excel Formulas Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Excel Formulas Academy содержит 4 уроков всего.

Проблема последнего совпадения

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

Когда список со временем растёт и один и тот же ключ встречается много раз, самая нижняя строка обычно содержит самые свежие данные. Обычная функция VLOOKUP или MATCH с точным совпадением вместо этого упорно выбирает верхнюю строку.

В этом уроке показано несколько надёжных способов получить последнее совпадающее значение.

Почему точный MATCH находит первое совпадение

MATCH(value, range, 0) просматривает данные сверху вниз и останавливается на самом первом точном совпадении. Если "Apple" встречается в строках 2, 5 и 9, MATCH возвращает 2.

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

=MATCH("Apple", A2:A10, 0)

XLOOKUP с обратным поиском

Если у Вас современная версия Excel или Google Sheets, XLOOKUP значительно упрощает задачу. Его пятый и шестой аргументы управляют режимом совпадения и направлением поиска.

Передайте -1 в качестве аргумента режима поиска, чтобы искать от последнего к первому. Тогда XLOOKUP вернёт значение, связанное с самым нижним совпавшим ключом.

Здесь выполняется поиск товара из G1 в диапазоне A2:A10 и возвращается соответствующая цена из B2:B10; поиск начинается снизу.

=XLOOKUP(G1, A2:A10, B2:B10, "Not found", 0, -1)

Классический приём с LOOKUP

В старых электронных таблицах широко известен приём, в котором LOOKUP используется вместе с числом 2 и хитрым делением на условие.

Выражение 1/(A2:A10=G1) даёт 1 для совпавших строк и ошибку деления для несовпавших. LOOKUP, выполняя поиск числа 2 — значения, превышающего все имеющиеся, — проходит мимо ошибок и останавливается на последней корректной 1, возвращая соответствующее значение из B2:B10.

=LOOKUP(2, 1/(A2:A10=G1), B2:B10)

Как работает приём с LOOKUP

Разберём 1/(A2:A10=G1) по шагам:

  • В строках, где ключ совпадает, получается 1/TRUE = 1.
  • В строках без совпадения получается 1/FALSE = ошибка #DIV/0!.

LOOKUP игнорирует ошибки и, не находя искомое значение (2), возвращает результат, соответствующий последней записи без ошибки. Поскольку все совпадения равны 1, выбирается последняя 1, поэтому возвращается значение последней совпавшей строки.

=LOOKUP(2, 1/(A2:A10=G1), B2:B10)

Последнее совпадение с INDEX и MATCH

Можно также использовать семейство INDEX-MATCH. Сначала нужно найти позицию последнего совпадения, а затем передать её в INDEX.

Используйте тот же приём с делением внутри MATCH: выполните поиск числа 2 в выражении 1/(A2:A10=G1), чтобы получить позицию последнего совпадения. Затем передайте эту позицию в INDEX для столбца с возвращаемыми значениями.

=INDEX(B2:B10, MATCH(2, 1/(A2:A10=G1)))

Почему MATCH(2, ...) находит последнее совпадение

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

Массив 1/(A2:A10=G1) содержит только 1 и ошибки. Наибольшее значение, не превышающее 2, равно 1, и MATCH возвращает позицию последней такой 1. Это и есть позиция последней совпавшей строки.

=MATCH(2, 1/(A2:A10=G1))

Конкретный пример

Предположим, в A2:A10 перечислены статусы заказа "Order-7", записанные с течением времени, а в B2:B10 находятся тексты статусов. "Order-7" встречается в строках 3, 6 и 9.

  • Массив совпадений помечает строки 3, 6 и 9 единицами, а остальные — ошибками.
  • MATCH(2, ...) возвращает 9 как позицию, отсчитываемую от начала диапазона, то есть последнее совпадение.
  • INDEX возвращает статус из этой последней строки — самый новый статус.
=INDEX(B2:B10, MATCH(2, 1/(A2:A10=G1)))

Выбор подходящего метода

Какой подход следует выбрать?

  • XLOOKUP с -1: самый простой и понятный вариант, если приложение его поддерживает.
  • LOOKUP(2, 1/...): работает почти везде и не требует специальной версии.
  • INDEX-MATCH(2, 1/...): удобен, если Вам также нужна позиция или требуется вернуть значение из другого столбца.

Все три способа дают один и тот же результат; выбирайте метод с учётом доступных инструментов и желаемой понятности формулы.

Распространённые ошибки

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

  • Диапазоны разного размера: диапазон условий и диапазон возвращаемых значений должны иметь одинаковую высоту, иначе строки не совпадут.
  • Скрытые дубликаты: пробелы в конце могут сделать "Apple " отличным от "Apple"; сначала очистите текст с помощью TRIM.
  • Полное отсутствие совпадений: при отсутствии совпадений приём возвращает ошибку. Оберните его в IFERROR, чтобы вывести понятное сообщение.
=IFERROR(LOOKUP(2, 1/(A2:A10=G1), B2:B10), "Not found")

Последнее совпадение по нескольким условиям

Можно объединить приём поиска последнего совпадения с двумя условиями. Перемножьте проверки условий внутри деления, чтобы только строки, соответствующие обоим ключам, давали 1.

Например, найдите самую свежую цену, для которой товар равен G1 и регион равен G2. Приём LOOKUP(2, ...) по-прежнему остановится на последней подходящей строке.

Это удобно для журналов с отметками времени, где один и тот же товар встречается в нескольких регионах.

=LOOKUP(2, 1/((A2:A10=G1)*(B2:B10=G2)), C2:C10)

Быстрая проверка

Проверьте, насколько хорошо Вы поняли поиск последнего совпадения.

Итоги урока

Чтобы вернуть последнее совпадающее значение вместо первого:

  • Используйте XLOOKUP(..., -1) для поиска снизу вверх, если эта функция доступна.
  • Используйте классический приём LOOKUP(2, 1/(range=key), result) в любой версии.
  • Используйте INDEX(result, MATCH(2, 1/(range=key))), если Вам также нужна позиция.

Не забывайте использовать диапазоны одинакового размера, удалять лишние пробелы и для безопасности оборачивать формулу в IFERROR.

=XLOOKUP(G1, A2:A10, B2:B10, "Not found", 0, -1)
Можно начать бесплатно

Изучай Excel с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
30
Уроки
120

Часто задаваемые вопросы

Урок «Поиск последнего совпадающего значения» бесплатный?

Да — полный текст урока «Поиск последнего совпадающего значения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Excel Formulas Academy, подпишись на CoddyKit PRO. Курс Excel Formulas Academy содержит 4 уроков всего.

Чему я научусь в уроке «Поиск последнего совпадающего значения»?

Возвращайте самое позднее совпадение с помощью методов обратного поиска. Ты практикуешь Excel Formulas Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Excel Formulas Academy?

Предыдущий опыт не требуется. Excel Formulas Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Поиск последнего совпадающего значения»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Excel Formulas Academy?

Да. Каждый урок Excel Formulas Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Двунаправленный поиск с INDEX-MATCH-MATCH
  2. Поиск последнего совпадающего значения
  3. Поиск по нескольким условиям с INDEX-MATCH
  4. Приближённое сопоставление для интервальных таблиц
← Назад к Excel Formulas Academy