Menu

ИНДЕКС и ПОИСКПОЗ в Excel (эксель): поиск влево, примеры

=ИНДЕКС(C2:C6;ПОИСКПОЗ(F2;A2:A6;0)) находит строку F2 в столбце A и возвращает значение из этой строки столбца C. Ищет влево, делает двумерный поиск и работает в любой версии Excel.

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

=ИНДЕКС(C2:C6;ПОИСКПОЗ(F2;A2:A6;0)) (по-английски INDEX и MATCH) находит строку, в которой F2 встречается в A2:A6, и возвращает значение из той же строки C2:C6. ПОИСКПОЗ находит позицию, ИНДЕКС достаёт значение на этой позиции. Связка работает в любой версии Excel и умеет искать влево. Таблицы на этой странице показывают английскую запись, но формулы в них можно вводить и по-русски, с точкой с запятой.

Цена товара
G2
ABCDEFG
1ProductCategoryPriceCodeLook forPrice
2AppleFruit$1.20P-101Pear$1.50
3PearFruit$1.50P-102
4CarrotVegetable$0.80P-205
5BreadBakery$2.40P-310
6MilkDairy$1.10P-412
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =ИНДЕКС(C2:C6;ПОИСКПОЗ(F2;A2:A6;0))

Замените F2 на Milk, и G2 вернёт $1.10. Замените C2:C6 на B2:B6, и формула вернёт вместо цены категорию.

Как ИНДЕКС и ПОИСКПОЗ работают вместе

Формула это два шага в одной ячейке. Здесь они разнесены по разным ячейкам, чтобы было видно, что возвращает каждая часть.

Два шага, по одному в ячейке
G3
ABCDEFG
1ProductCategoryPriceCodeLook forBread
2AppleFruit$1.20P-101Position4
3PearFruit$1.50P-102Price$2.40
4CarrotVegetable$0.80P-205
5BreadBakery$2.40P-310
6MilkDairy$1.10P-412
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =ИНДЕКС(C2:C6;G2)

ПОИСКПОЗ(G1;A2:A6;0) возвращает 4, потому что Bread четвёртый элемент A2:A6. ИНДЕКС(C2:C6;4) возвращает четвёртый элемент C2:C6, $2.40. Поставьте ПОИСКПОЗ внутрь ИНДЕКС вместо G2, и получится формула в одной ячейке. Чтобы она работала, нужны два правила:

  • Оба диапазона должны начинаться в одной строке и иметь одинаковую высоту. ПОИСКПОЗ(...;A2:A6;0) считает от строки 2, поэтому ИНДЕКС должна читать C2:C6, а не C1:C6 (тогда вернулась бы строка выше).
  • Заканчивайте ПОИСКПОЗ нулём. Без него ПОИСКПОЗ выполняет приблизительный поиск, считая столбец A отсортированным, и на списке имён может вернуть позицию не той строки. Три типа сопоставления разобраны на странице ПОИСКПОЗ.

Если значения нет в списке, ПОИСКПОЗ возвращает #Н/Д (по-английски #N/A, так ошибку показывают и таблицы здесь), и вся формула тоже. =ЕСНД(ИНДЕКС(C2:C6;ПОИСКПОЗ(F2;A2:A6;0));"Not found") показывает вместо этого текст.

Поиск влево

ВПР возвращает столбцы правее того, по которому ищет. ИНДЕКС и ПОИСКПОЗ порядок не важен: ищите в столбце D, возвращайте столбец A.

Название товара по коду
G2
ABCDEFG
1ProductCategoryPriceCodeCodeProduct
2AppleFruit$1.20P-101P-310Bread
3PearFruit$1.50P-102
4CarrotVegetable$0.80P-205
5BreadBakery$2.40P-310
6MilkDairy$1.10P-412
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =ИНДЕКС(A2:A6;ПОИСКПОЗ(F2;D2:D6;0))

P-310 возвращает Bread. Введите P-205 в F2, чтобы получить Carrot. С ВПР пришлось бы сначала перенести столбец Code в начало таблицы.

Двумерный поиск: ИНДЕКС с двумя ПОИСКПОЗ

ИНДЕКС принимает номер строки и номер столбца. Дайте ей всю таблицу, и пусть одна ПОИСКПОЗ найдёт строку, а другая столбец.

Продажи по региону и месяцу
B8
ABCD
1RegionJanFebMar
2North4,2003,9004,800
3South3,1003,6003,300
4East5,2004,7005,600
5West2,8003,0003,400
6RegionEast
7MonthMar
8Sales5,600
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =ИНДЕКС(B2:D5;ПОИСКПОЗ(B6;A2:A5;0);ПОИСКПОЗ(B7;B1:D1;0))

East это строка 3 в A2:A5, а Mar столбец 3 в B1:D1, поэтому ИНДЕКС возвращает строку 3, столбец 3 из B2:D5: 5,600. ПОИСКПОЗ для строки ищет вниз по первому столбцу, ПОИСКПОЗ для столбца ищет вправо по строке заголовков, и оба диапазона выровнены по таблице B2:D5.

Почему ИНДЕКС и ПОИСКПОЗ лучше ВПР

=VLOOKUP(F2, A2:D6, 3, FALSE)
=INDEX(C2:C6, MATCH(F2, A2:A6, 0))

В русском Excel: =ВПР(F2;A2:D6;3;ЛОЖЬ) и =ИНДЕКС(C2:C6;ПОИСКПОЗ(F2;A2:A6;0)). Обе возвращают цену. Разница проявляется, когда лист меняется:

  • Вставка столбца. Вставьте столбец между Category и Price, и ВПР по-прежнему запросит столбец 3, а это теперь новый пустой столбец. В варианте с ИНДЕКС Excel поправит C2:C6 на D2:D6, и формула продолжит работать.
  • Поиск влево. Показан выше: ВПР не умеет, ИНДЕКС и ПОИСКПОЗ умеют.

В Excel 2021 и Microsoft 365 ПРОСМОТРX делает и то, и другое одной функцией с более простыми аргументами. ИНДЕКС и ПОИСКПОЗ остаются выбором для файлов, которые должны открываться в Excel 2019 и старше, а сама ИНДЕКС полезна и отдельно. Поиск сразу по двум условиям разобран на странице поиск по нескольким условиям.

Практика: поиск влево

Выгрузка остатков
G2
ABCDEFG
1CodePriceStockProductLook forPrice
2P-101$1.2040AppleMilk
3P-102$1.5025Pear
4P-205$0.8060Carrot
5P-310$2.4015Bread
6P-412$1.1030Milk
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.

Ваша очередь: Названия товаров стоят в последнем столбце. В G2 верните цену товара из F2 с помощью ИНДЕКС и ПОИСКПОЗ.

Практика: двумерный поиск

Баллы за тесты
B9
ABCD
1StudentMathScienceArt
2Ana788592
3Ben647188
4Cara958973
5Dev826779
6
7StudentCara
8SubjectScience
9Score
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.

Ваша очередь: В B9 верните балл ученика из B7 по предмету из B8.

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

Как работает связка ИНДЕКС и ПОИСКПОЗ?

ПОИСКПОЗ находит позицию значения в столбце, а ИНДЕКС возвращает значение на этой позиции в другом столбце. В =ИНДЕКС(C2:C6;ПОИСКПОЗ("Pear";A2:A6;0)) ПОИСКПОЗ возвращает 2, потому что Pear второй элемент A2:A6, а ИНДЕКС возвращает второй элемент C2:C6.

Зачем использовать ИНДЕКС и ПОИСКПОЗ вместо ВПР?

Связка может вернуть столбец левее того, по которому ищет, и не ломается при вставке столбца внутрь таблицы (номера столбца, который может устареть, нет). В Excel 2021 и Microsoft 365 те же преимущества даёт одна функция ПРОСМОТРX.

Что означает 0 в ПОИСКПОЗ?

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

Как сделать двумерный поиск с ИНДЕКС и ПОИСКПОЗ?

Дайте ИНДЕКС всю таблицу и две ПОИСКПОЗ, одну для строки и одну для столбца: =ИНДЕКС(B2:D5;ПОИСКПОЗ("South";A2:A5;0);ПОИСКПОЗ("Feb";B1:D1;0)) возвращает значение на пересечении строки South и столбца Feb.

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

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

НАЧАТЬ