Функции ИНДЕКС и ПОИСКПОЗ в Excel – это мощный инструмент, который позволяет вам находить и извлекать данные. Используя их вместе, вы можете создавать сложные формулы, которые будут автоматически обновляться при изменении данных. В этом руководстве показано, как их использовать и чем они лучше ВПР.
Преимущества использования функций ИНДЕКС и ПОИСКПОЗ:
- Гибкость: позволяют создавать сложные формулы.
- Мощность: позволяют работать с большими объемами данных.
- Универсальность: могут использоваться для самых разных задач.
- Эффективность: помогают автоматизировать задачи и повысить производительность.
В нескольких недавних статьях мы объяснили основы функции ВПР новичкам и предоставили более сложные примеры формул ВПР опытным пользователям. А теперь я постараюсь показать вам другой способ поиска нужных значений в Excel.
Для чего это нужно? Потому что функция ВПР имеет множество ограничений, которые могут помешать получить желаемый результат. Об этом вы можете прочитать здесь: 22 факта, которые нужно знать о формуле ВПР. С другой стороны, комбинация ПОИСКПОЗ ИНДЕКС более гибкая. Она имеет много замечательных возможностей, которые во многих отношениях превосходят ВПР.
Как работает ИНДЕКС и ПОИСКПОЗ
Поскольку целью этого руководства является демонстрация альтернативного способа выполнения поиска в Excel с использованием комбинации функций ИНДЕКС и ПОИСКПОЗ, мы не будем подробно останавливаться на их синтаксисе и использовании. Тем более, что это подробно рассмотрено в других материалах, ссылки на которые вы можете найти в конце этой статьи.
Сперва мы вспомним лишь минимум, необходимый для понимания общей идеи, а затем подробно рассмотрим примеры формул, раскрывающие все преимущества использования ПОИСКПОЗ и ИНДЕКС вместо ВПР.
Функция ИНДЕКС
Она возвращает значение в массиве на основе указанных вами номеров строк и столбцов. Синтаксис ее прост:
ИНДЕКС(массив,номер_строки,[номер_столбца])
Вот простое объяснение каждого параметра:
- массив - это диапазон ячеек, именованный диапазон или таблица.
- номер_строки — это номер строки в массиве, из которого нужно вернуть значение. Если этот аргумент опущен, требуется следующий – номер_столбца.
- номер_столбца — это номер столбца, из которого нужно вернуть значение. Если он опущен, требуется номер_строки.
Дополнительные сведения см. в статье Функция ИНДЕКС в Excel .
А вот пример в самом простом виде:
=ИНДЕКС(A1:C10;2;3)
Формула выполняет поиск в ячейках с A1 по C10 и возвращает значение ячейки во 2-й строке и 3-м столбце, т. е. в ячейке C2.
Очень легко, правда? Однако при работе с реальными данными вы не всегда заранее знаете, какие строки и столбцы вам нужны. Здесь вам пригодится ПОИСКПОЗ.
Функция ПОИСКПОЗ
Она ищет нужное значение в диапазоне ячеек и возвращает относительное положение этого значения в диапазоне.
Синтаксис функции следующий:
ПОИСКПОЗ(искомое_значение, искомый_массив, [тип_совпадения])
- искомое_значение — числовое или текстовое значение, которое вы ищете.
- диапазон_поиска - диапазон ячеек, в которых будем искать.
- тип_совпадения — указывает, следует ли искать точное соответствие или наиболее близкое совпадение:
- 1 или опущено — находит наибольшее значение, которое меньше или равно искомому значению. Требуется сортировка массива поиска в порядке возрастания.
- 0 — находит первое значение, точно равное искомому значению. В комбинации ИНДЕКС/ПОИСКПОЗ вам почти всегда нужно точное совпадение. Поэтому вы чаще всего устанавливаете третий аргумент вашей функции в 0.
- -1 — находит наименьшее значение, которое больше или равно искомому значению. Требуется сортировка массива поиска в порядке убывания.
Например, диапазон B1:B3 содержит значения «яблоки», «апельсины», «лимоны». Приведенная ниже формула возвращает число 3, поскольку «лимоны» — это третья по счету запись в этом диапазоне:
=ПОИСКПОЗ("лимоны";B1:B3;0)
Дополнительные сведения смотрите в статье Функция ПОИСКПОЗ в Excel .
На первый взгляд полезность этой функции может показаться сомнительной. Кого волнует положение значения в диапазоне? Что мы действительно хотим определить, так это само значение.
Однако, относительная позиция искомого значения (т. е. номера строки и столбца, в которых оно находится) — это именно то, что нам нужно указать для аргументов номер_строки и номер_столбца в функции ИНДЕКС. Она может найти значение на пересечении заданной строки и столбца. Но при этом не может определить, какую именно строку и столбец ей нужно выбрать.
Вот поэтому совместное использование ИНДЕКС+ПОИСКПОЗ открывает перед нами массу возможностей.
Пошаговая инструкция
Надеюсь, вы уже начали понимать, как эти две функции работают вместе. ИНДЕКС извлекает нужное значение по номерам столбцов и строк, а ПОИСКПОЗ предоставляет ей эти номера. Вот и все!
Для вертикального поиска вы используете функцию ПОИСКПОЗ только для определения номера строки, указывая диапазон столбцов непосредственно в самой формуле:
ИНДЕКС( столбец для возврата значения ; ПОИСКПОЗ( искомое значение ; столбец для поиска ; 0))
Все еще не совсем понимаете эту логику? Возможно, будет проще разобрать на примере. Предположим, у вас есть список национальных столиц и их население:

Чтобы найти население определенной столицы, скажем, Индии, используйте следующую формулу:
=ИНДЕКС(C2:C10; ПОИСКПОЗ(“Индия”;A2:A10;0))
Теперь давайте проанализируем, что на самом деле делает каждый компонент этой формулы:
- Функция ПОИСКПОЗ ищет искомое значение "Индия" в диапазоне A2:A10. Возвращает число 2, поскольку это слово занимает второе место в массиве поиска.
- Этот номер поступает непосредственно в аргумент номер_строки функции ИНДЕКС, предписывая вернуть значение из этой строки.
Таким образом, приведенная выше формула превращается в ИНДЕКС(C2:C10;2). Это означает, что нужно искать в ячейках от C2 до C10 и извлекать значение из второй ячейки в этом диапазоне, то есть из C3, потому что мы начинаем отсчет со второй строки.
Но указывать название города в формуле не совсем правильно. Ведь для каждого нового поиска придется корректировать эту формулу. Введите его в какую-нибудь отдельную ячейку, скажем, F1, укажите ссылку на ячейку для ПОИСКПОЗ. Вы получите формулу динамического поиска:
=ИНДЕКС(C2:C10;ПОИСКПОЗ(F1;A2:A10;0))

Важное замечание! Количество строк в аргументе массив функции ИНДЕКС должно совпадать с количеством строк в аргументе просматриваемый_массив в ПОИСКПОЗ, иначе формула выдаст неверный результат.
Вы спросите: «А почему бы нам просто не использовать обычную формулу ВПР? Какой смысл тратить время на то, чтобы разобраться в хитросплетениях ИНДЕКС ПОИСКПОЗ в Excel?»
Вот как это будет выглядеть:
=ВПР(F1; A2:C10; 3; 0)
Конечно, так проще. Но этот наш элементарный пример предназначен только для демонстрационных целей, чтобы вы поняли, как именно функции ИНДЕКС и ПОИСКПОЗ работают вместе. Действительно, ВПР была бы здесь более уместна. Другие примеры, которые вы найдёте ниже, покажут вам реальную силу этой комбинации. Ведь она легко справляется со многими сложными задачами, когда ВПР будет бессильна.
Почему это хорошая замена ВПР?
Решая, какую функцию использовать для вертикального поиска, большинство знатоков Excel сходятся во мнении, что ПОИСКПОЗ+ИНДЕКС намного лучше, чем ВПР.
Однако многие до сих пор остаются с ВПР. Во-первых, потому что это проще. Во-вторых, они не до конца понимают все преимущества использования формулы ПОИСКПОЗ ИНДЕКС в Excel.
Ниже я укажу на ключевые преимущества перед ВПР.
4 основные причины использовать ИНДЕКС+ПОИСКПОЗ вместо ВПР
- Поиск справа налево. Как известно любому образованному пользователю, ВПР не может искать влево. Это означает, что искомое значение всегда должно находиться в крайнем левом столбце таблицы. А извлекать нужное значение мы будем из столбца, который находится правее. ИНДЕКС+ПОИСКПОЗ может легко выполнять поиск влево! Здесь это показано в действии: Как выполнить поиск значения слева в Excel .
- Можно безопасно вставлять или удалять столбцы. Формулы ВПР не работают или выдают неверные результаты, когда новый столбец удаляется из таблицы поиска или добавляется в нее. Ведь синтаксис ВПР требует указания порядкового номера столбца, из которого вы хотите извлечь данные. Когда вы добавляете или удаляете столбцы, этот номер в формуле автоматически не меняется, а нужный столбец уже оказывается на новом месте.
В данном случае вы указываете диапазон возвращаемых столбцов, а не номер одного из них. В результате вы можете вставлять и удалять столько столбцов, сколько хотите, не беспокоясь об обновлении каждой связанной с ними формулы.
- Нет ограничений на размер искомого значения. При использовании функции ВПР общая длина ваших критериев поиска не может превышать 255 символов, иначе вы получите ошибку #ЗНАЧ!. Таким образом, если ваш набор данных содержит длинные строки, ИНДЕКС+ПОИСКПОЗ — единственное работающее решение.
- Более высокая скорость обработки. Если ваши таблицы относительно небольшие, вряд ли будет какая-то существенная разница в производительности Excel. Но если ваши рабочие листы содержат сотни формул, ИНДЕКС+ПОИСКПОЗ будет работать намного быстрее, чем ВПР. Причина в том, что Excel будет обрабатывать только столбцы поиска и возврата, а не весь массив таблицы.
Влияние ВПР на производительность Excel может быть особенно заметным, если ваша книга содержит сложные формулы массива. Чем больше значений содержит ваш массив и чем больше формул массива содержится в книге, тем медленнее работает Excel.
ИНДЕКС+ПОИСКПОЗ в Excel – примеры формул
Уяснив преимущества данной формулы, давайте посмотрим, как можно применить это не примерах.
Формула для поиска справа налево
Как уже упоминалось, ВПР не может получать значения слева от столбца поиска. Таким образом, если ваши значения поиска не находятся в самом левом столбце, нет никаких шансов, что формула ВПР принесет вам желаемый результат. Функция ПОИСКПОЗ+ИНДЕКС в Excel более универсальна. При ее использовании не имеет особого значения, где расположены столбцы поиска и возврата.
Для этого примера мы добавим столбец «Ранг» слева от нашей основной таблицы и попытаемся выяснить, какое место занимает столица России по численности населения среди других перечисленных столиц.
Записав искомое значение в G1, давайте искать его в диапазоне C2:C10 и возвращать соответствующее значение из A2:A10:
=ИНДЕКС(A2:A10; ПОИСКПОЗ(G1;C2:C10;0))

Совет. Если вы планируете использовать формулу более чем для одной ячейки, обязательно зафиксируйте оба диапазона абсолютными ссылками (например, $A$2:$A$10 и $C$2:$C$10), чтобы они не изменялись при копировании формулы.
Поиск по двум условиям одновременно в строках и столбцах
В приведенных выше примерах мы рассмотери пример, как вернуть значение из точно указанного столбца. Но что, если вам нужно искать в нескольких строках и столбцах? То есть, сначала нужно найти подходящий столбец, а уж потом извлечь из него значение? Другими словами, что, если вы хотите выполнить так называемый матричный или двусторонний поиск?
Формула поиска по двум условиям по строкам и столбцам очень похожа на базовую формулу, которую мы рассмтрели выше, но с одним отличием.
Вы используете две функции ПОИСКПОЗ, вложенных друг в друга. Одну – для получения номера строки, а другую – для получения номера столбца.
ИНДЕКС(массив; ПОИСКПОЗ(значение_поиска1 ; столбец_поиска ; 0); ПОИСКПОЗ(значение_поиска2 ; столбец_поиска ; 0))
А теперь составим формулу двумерного поиска, чтобы найти население (в миллионах) в данной стране за данный год.
С целевой страной в G1 (значение_поиска1) и целевым годом в G2 (значение_поиска2) формула принимает следующий вид:
=ИНДЕКС(B2:D11; ПОИСКПОЗ(G1;A2:A11;0); ПОИСКПОЗ(G2;B1:D1;0))

Как работает эта формула?
Всякий раз, когда вам нужно понять сложную формулу Excel, разделите ее на более мелкие части. Затем посмотрите, что делает каждая отдельная функция:
ПОИСКПОЗ(G1;A2:A11;0); – ищет в A2:A11 значение из ячейки G1 («США») и возвращает его позицию, которая равна 3.
ПОИСКПОЗ(G2;B1:D1;0) – просматривает диапазон B1:D1, чтобы получить позицию значения из ячейки G2 («2015»), которая равна 3.
Найденные выше номера строк и столбцов становятся соответствующими аргументами функции ИНДЕКС:
ИНДЕКС(B2:D11, 3, 3)
В результате вы получите значение на пересечении 3-й строки и 3-го столбца в диапазоне B2:D11, то есть из D4. Несложно?
Более подробно такой способ поиска рассмотрен здесь: 5 способов поиска значения в массиве Excel.
Поиск по нескольким условиям
Вы, возможно, уже протестировали формулу для ВПР с несколькими условиями . Однако существенным недостатком этого подхода является необходимость добавления вспомогательного столбца.
Замечательно то, что функция ИНДЕКС ПОИСКПОЗ в Excel также может выполнять поиск по нескольким условиям. Но это не требует изменения или реструктуризации исходных данных!
Вот общая формула для поиска по нескольким критериям:
{=ИНДЕКС( диапазон_возврата; ПОИСКПОЗ (1; ( критерий1 = диапазон1 ) * ( критерий2 = диапазон2 ); 0))}
Примечание. Это формула массива , которую необходимо вводить с помощью сочетания клавиш Ctrl + Shift + Enter
.
Предположим, что в таблице ниже вы хотите найти значение на основе двух критериев: Покупатель и Товар.
Следующая формула отлично работает:
=ИНДЕКС(C2:C10; ПОИСКПОЗ(1; (F1=A2:A10) * (F2=B2:B10); 0))
Где C2:C10 — это диапазон, из которого возвращается значение.
F1 — это критерий1,
A2:A10 — это диапазон для сравнения с критерием 1,
F2 — это критерий 2,
B2:B10 — это диапазон для сравнения с критерием 2.
Не забудьте правильно ввести формулу, нажав Ctrl + Shift + Enter. Excel автоматически заключит ее в фигурные скобки, как показано на скриншоте ниже:

Если вы не хотите использовать формулы массива, добавьте в формулу в F4 еще одну функцию ИНДЕКС и завершите ее ввод обычным нажатием Enter:
=ИНДЕКС(C2:C10; ПОИСКПОЗ(1; ИНДЕКС((F1=A2:A10) * (F2=B2:B10); 0; 1); 0))
Разберем пошагово, как это работает.
Здесь используется тот же подход, что и в обычной формуле, где просматривается только один столбец. Чтобы оценить несколько критериев, вы создаете два или более массива значений ИСТИНА и ЛОЖЬ. Каждый из них представляет совпадения и несовпадения для каждого отдельного критерия. Затем вы перемножаете соответствующие элементы этих массивов. Это умножение преобразует ИСТИНА и ЛОЖЬ в 1 и 0 соответственно и создает новый массив, в котором единицы соответствуют строкам, которые удовлетворяют всем условиям. Функция ПОИСКПОЗ со значением поиска 1 находит первую «1» в этом массиве и передает ее позицию в ИНДЕКС. ИНДЕКС возвращает значение в этой позиции из указанного столбца.
Второй вариант формулы основан на способности функции ИНДЕКС самостоятельно работать с массивами. Второй вложенный ИНДЕКС имеет 0 в аргументе номер_строки, так что он будет передавать весь массив столбцов в ПОИСКПОЗ.
Более подробную информацию вы можете получить в этом руководстве: Поиск ИНДЕКС ПОИСКПОЗ по нескольким условиям.
Как можно найти среднее, максимальное и минимальное значение
Microsoft Excel имеет специальные функции для поиска минимального, максимального и среднего значения в диапазоне. Но что, если вам нужно получить значение из другой ячейки, связанной с этими значениями? Например, получить название города с максимальным населением или узнать товар с минимальными продажами? В зависимости от того, какой результат вам нужно получить, используйте функцию МАКС, МИН или СРЗНАЧ.
Максимальное значение.
Предположим, нам нужно в списке городов найти столицу с самым большим населением. Чтобы найти наибольшее значение в столбце С и вернуть соответствующее ему значение из столбца В, находящееся в той же строке, используйте эту формулу:
=ИНДЕКС(B2:B10; ПОИСКПОЗ(МАКС(C2:C10); C2:C10; 0))
Скриншот с примером находится чуть ниже.
Минимальное значение
Теперь найдём город с самым маленьким населением в списке. Чтобы найти наименьшее число в столбце С и получить соответствующее ему значение из столбца В:
=ИНДЕКС(B2:B10; ПОИСКПОЗ(МИН(C2:C10); C2:C10; 0))
Ближайшее к среднему
Теперь мы находим город, население которого наиболее близко к среднему значению. Чтобы вычислить позицию, наиболее близкую к средней величине населения, рассчитанной по данным D2:D10, и получить соответствующее значение из столбца C, используйте следующую формулу:
=ИНДЕКС(B2:B10; ПОИСКПОЗ(СРЗНАЧ(C2:C10); C2:C10; -1 ))
Обращаю ваше внимание, что в данном случае данные о населении должны быть обязательно отсортированы. По возрастанию либо по убыванию – не важно как. В зависимости от того, как организованы ваши данные, укажите 1 или -1 для третьего аргумента (тип_совпадения) функции ПОИСКПОЗ:
- Если ваш столбец поиска (столбец D в нашем случае) отсортирован по возрастанию , поставьте 1. Формула вычислит наибольшее значение, которое меньше или равно среднему значению.
- Если ваш столбец поиска отсортирован по убыванию , введите -1. Формула вычислит наименьшее значение, которое больше или равно среднему значению.
- Если ваш массив поиска содержит значение, точно равное среднему, вы можете ввести 0 для точного совпадения. Никакой сортировки не требуется.
В нашем примере данные в столбце D отсортированы в порядке убывания, поэтому мы используем -1 для типа соответствия. Мы получаем «Токио», так как его население (13 189 000) является ближайшим, превышающим среднее значение (12 269 006).

Что делать с ошибками поиска?
Если формула ИНДЕКС ПОИСКПОЗ в Excel не может найти искомое значение, она выдает ошибку #Н/Д. Если вы хотите заменить это стандартное сообщение чем-то более информативным, оберните формулу ПОИСКПОЗ ИНДЕКС в функцию ЕСНД. Например:
=ЕСНД(ИНДЕКС(C2:C10; ПОИСКПОЗ(F1;A2:A10;0)); "Не найдено")
И теперь, если кто-то вводит значение, которое не существует в диапазоне поиска, формула явно сообщит пользователю, что совпадений не найдено:

Если вы хотите перехватывать все ошибки, а не только #Н/Д, используйте функцию ЕСЛИОШИБКА вместо ЕСНД:
=ЕСЛИОШИБКА(ИНДЕКС(C2:C10; ПОИСКПОЗ(F1;A2:A10;0)); "Что-то пошло не так!")
Пожалуйста, имейте в виду, что во многих ситуациях было бы не совсем правильно скрывать все возможные ошибки. Ведь они предупреждают вас о возможных проблемах в вашей формуле.
Часто задаваемые вопросы и ответы (FAQ)
Вот как можно использовать ИНДЕКС ПОИСКПОЗ в Excel вместо ВПР. Я надеюсь, что наши примеры формул окажутся полезными для вас.
Добрых дней. С помощью комбинации команд ИНДЕКС-ПОИСКПОЗ можно найти значение на пересечении крайних строки и столбца. А как быть, если уже известно значение в таблице, на пересечении и, допустим, значение в крайнем столбце, а найти надо значение в крайней строке?
Это неверное утверждение, тоже только 255 символов.
Добрый день. Помогите пожалуйста. ПОИСКПОЗ ( критерий1 = диапазон1 )-находит нужный столбец по значению ячейки, * ( критерий2 = диапазон2 )-критерий 2-значение второй ячейки диапазон2 - найденый столбец.
Как правильно указать диапазон поиска №2 если столбец меняется от значения ячейки
Подскажите, как работает индекс(поискпоз... с несколькими листами?
Посмотрите примеры в этой статье: ВПР в нескольких таблицах Excel: простое руководство. ВПР без проблем можно заменить на ИНДЕКС ПОИСКПОЗ.
Подскажите пожалуйста формулу, необходимо поиск значения осуществлять сразу в нескольких столбиках
Вам нужно последовательно перебирать столбцы и искать в каждом из них. Для этого можно использовать функцию ЕСЛИОШИБКА. Пример смотрите здесь: Вложенные функции ЕСЛИОШИБКА для выполнения последовательных ВПР. Вместо ВПР совершенно аналогично можно использовать ИНДЕКС ПОИСКПОЗ. Если поиск в столбце завершился неудачно, автоматически переходим к следующему, пока не найдем нужное значение.
подскажите плиз формулу, есть таблица, дата, ФИО, (завтрак, обед ужин); вид еды (название блюд, овощей, фруктов). Нужно найти минимальную дату, когда человек например, в первый раз ел (помидор или яблоко, или борщ и т.д.)
Если я правильно понял, попробуйте такую формулу
=МИН(ЕСЛИОШИБКА(A2:A20/(B2:B20="Иванов"),999999999999))
вот такая примерно табличка. Конечно "суп, компот, борщ" я могу изменить и добавить например, "ХХХ_" перед словами, но это будет не то.
Добрый день, подскажите, можно ли пользоваться формулой ИНДЕКС+ПОИСКПОЗ когда нужно найти данные на других листах?
Добрый день! Конечно, можно. Просто используйте ссылки на другой лист или другую книгу.