Menu

ПОИСКПОЗX в Excel (эксель): позиция, последнее совпадение

=ПОИСКПОЗX(E2;A2:A6) возвращает позицию E2 в A2:A6, по умолчанию с точным совпадением. Ещё она находит следующее меньшее или большее значение без сортировки, ищет снизу и понимает подстановочные знаки.

Каждая таблица на этой странице живая: измените число или формулу, и она пересчитается.

=ПОИСКПОЗX(E2;A2:A6) (по-английски XMATCH) возвращает позицию E2 в A2:A6: 1 для первой ячейки, 2 для второй. В отличие от ПОИСКПОЗ, она ищет точное совпадение, если не сказать иначе. ПОИСКПОЗX нужен Excel 2021 или Microsoft 365; в более старых версиях используйте ПОИСКПОЗ(E2;A2:A6;0). Таблицы на этой странице показывают английскую запись, но формулы в них можно вводить и по-русски, с точкой с запятой.

Позиция товара
F2
ABCDEF
1ProductCategoryPriceLook forPosition
2AppleFruit$1.20Carrot3
3PearFruit$1.50
4CarrotVegetable$0.80
5BreadBakery$2.40
6MilkDairy$1.10
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =ПОИСКПОЗX(E2;A2:A6)

Carrot третий элемент, поэтому F2 показывает 3. Введите Kiwi, и функция вернёт #Н/Д (в таблице по-английски #N/A; таблицы здесь показывают ошибки под английскими именами). Как и любой поиск в Excel, она не учитывает регистр.

Синтаксис ПОИСКПОЗX

=XMATCH(lookup_value, lookup_array, [match_mode], [search_mode])
АргументЗначения
match_mode0 точное (по умолчанию), -1 точное или следующее меньшее, 1 точное или следующее большее, 2 совпадение с подстановочными знаками
search_mode1 с первого элемента (по умолчанию), -1 с последнего элемента, 2 двоичный поиск по возрастанию, -2 двоичный поиск по убыванию

Двоичные режимы быстрее на очень больших отсортированных списках и возвращают неверные позиции на неотсортированных. Остальные режимы работают с данными в любом порядке.

Следующее меньшее или большее без сортировки

match_mode 1 находит наименьшее значение, которое больше искомого или равно ему. Это ответ на вопрос «самая маленькая коробка, в которую влезет», даже когда размеры перечислены вразнобой. С ПОИСКПОЗ список пришлось бы отсортировать от большего к меньшему.

Самая маленькая подходящая коробка
E2
ABCDE
1BoxHolds (liters)Item (liters)18
2S5Position4
3XL50BoxL
4M12
5L25
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =ПОИСКПОЗX(E1;B2:B5;1)

18 литров вмещают размеры 25 и 50, меньший из них 25, это четвёртый элемент, коробка L. Замените E1 на 12, чтобы получить точное совпадение (M), или на 40, чтобы получить XL. match_mode -1 работает наоборот: наибольшее значение, которое меньше искомого или равно ему, правило для налоговых ставок и уровней комиссии. У ПРОСМОТРX есть те же два режима, и она сразу возвращает значение.

Поиск с последнего элемента

search_mode -1 начинает снизу, поэтому ПОИСКПОЗX возвращает позицию последнего совпадения. Позиции по-прежнему считаются от верха диапазона.

Последний заказ клиента
F2
ABCDEF
1DateCustomerAmountCustomerBen
22026-03-02Ben120Last position5
32026-03-05Ana80Last date2026-03-20
42026-03-09Ben45First position1
52026-03-12Cara200
62026-03-20Ben60
72026-03-24Ana95
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =ПОИСКПОЗX(F1;B2:B7;0;-1)

Ben встречается на позициях 1, 3 и 5. Поиск сверху возвращает 1, поиск снизу 5, его заказ от 2026-03-20. До ПОИСКПОЗX для последней позиции требовался приём с массивом: =ПОИСКПОЗ(2;1/(B2:B7=F1)).

Подстановочным знакам нужен match_mode 2

С match_mode 2 знак * означает любые символы, а ? ровно один. В остальных режимах это обычные символы, тогда как ПОИСКПОЗ считает их подстановочными знаками всякий раз, когда тип сопоставления равен 0.

Поиск по шаблону
D2
ABCD
1ProductPatternPosition
2Green tea*coffee2
3Iced coffee?lack*4
4Coffee beans
5Black tea
6Orange juice
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =ПОИСКПОЗX(C2;A2:A6;2)

*coffee (всё, что заканчивается на «coffee») совпадает с Iced coffee на позиции 2, а ?lack* совпадает с Black tea на позиции 4. Coffee beans не подходит под *coffee, потому что в конце шаблона нет *. Без match_mode 2 тот же шаблон ищется как обычный текст, поэтому в Excel это возвращает #Н/Д:

=XMATCH("*coffee", A2:A6)        #N/A: no cell is literally "*coffee"
=XMATCH("*coffee", A2:A6, 2)     2

В русском Excel: =ПОИСКПОЗX("*coffee";A2:A6) и =ПОИСКПОЗX("*coffee";A2:A6;2).

ПОИСКПОЗX и ПОИСКПОЗ

ПОИСКПОЗПОИСКПОЗX
По умолчанию, если режим не указанПриблизительное (1), данные должны быть отсортированыТочное
Следующее меньшее значение1, данные по возрастанию-1, любой порядок
Следующее большее значение-1, данные по убыванию1, любой порядок
Подстановочные знакиВсегда включены при 0Только с match_mode 2
Последнее совпадениеНетsearch_mode -1
ВерсииВсеExcel 2021 и Microsoft 365

Знаки перевёрнуты: -1 у ПОИСКПОЗ находит следующее большее значение, а -1 у ПОИСКПОЗX следующее меньшее. Переводя ПОИСКПОЗ(E2;A2:A6;0) в ПОИСКПОЗX, уберите 0; переводя приблизительную ПОИСКПОЗ, смените знак, и порядок сортировки перестанет иметь значение. Старая функция описана на странице ПОИСКПОЗ.

Практика: позиция последнего заказа

Заказы
F2
ABCDEF
1DateCustomerAmountCustomerBen
22026-03-02Ben120Last position
32026-03-05Ana80
42026-03-09Ben45
52026-03-12Cara200
62026-03-20Ben60
72026-03-24Ana95
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.

Ваша очередь: В F2 верните позицию последнего заказа клиента из F1.

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

Чем ПОИСКПОЗ отличается от ПОИСКПОЗX?

ПОИСКПОЗX по умолчанию ищет точное совпадение (ПОИСКПОЗ по умолчанию приблизительное), находит следующее меньшее или большее значение без сортировки данных, умеет искать с последнего элемента вверх и считает * и ? подстановочными знаками, только если попросить об этом через match_mode 2. Ей нужен Excel 2021 или Microsoft 365.

Как найти последнее вхождение с ПОИСКПОЗX?

Задайте search_mode, четвёртому аргументу, значение -1: =ПОИСКПОЗX("Ben";B2:B7;0;-1) возвращает позицию последнего Ben в B2:B7. Позиции по-прежнему считаются от верха диапазона.

Что возвращает ПОИСКПОЗX, если ничего не совпало?

#Н/Д, как и ПОИСКПОЗ. Оберните её в ЕСНД, чтобы показать что-то другое: =ЕСНД(ПОИСКПОЗX(E2;A2:A6);"Not in list").

Может ли ПОИСКПОЗX заменить ПОИСКПОЗ внутри ИНДЕКС?

Да. =ИНДЕКС(C2:C6;ПОИСКПОЗX(E2;A2:A6)) работает как ИНДЕКС с ПОИСКПОЗ(E2;A2:A6;0), и забыть 0 уже нельзя. Используйте ПОИСКПОЗ, когда файл должен открываться в Excel 2019 или старше.

Иллюстрация языков программирования Coddy

Учитесь программировать с Coddy

НАЧАТЬ