Функция ПОИСКПОЗ
Совет: Попробуйте использовать новую функцию XMATCH , улучшенную версию функции MATCH, которая работает в любом направлении и по умолчанию возвращает точные совпадения, что упрощает и удобнее в использовании, чем предшественницу.
Функция ПОИСКПОЗ выполняет поиск указанного элемента в диапазоне ячеек и возвращает относительную позицию этого элемента в диапазоне. Например, если диапазон A1:A3 содержит значения 5, 25 и 38, то формула =ПОИСКПОЗ(25;A1:A3;0) возвращает значение 2, поскольку элемент 25 является вторым в диапазоне.
Совет: Функцией ПОИСКПОЗ следует пользоваться вместо одной из функций ПРОСМОТР, когда требуется найти позицию элемента в диапазоне, а не сам элемент. Например, функцию ПОИСКПОЗ можно использовать для передачи значения аргумента номер_строки функции ИНДЕКС.
Синтаксис
ПОИСКПОЗ(искомое_значение;просматриваемый_массив;[тип_сопоставления])
Аргументы функции ПОИСКПОЗ описаны ниже.
-
Искомое_значение. Обязательный аргумент. Значение, которое сопоставляется со значениями в аргументе просматриваемый_массив. Например, при поиске номера в телефонной книге имя абонента указывается в качестве искомого значения, а нужным значением будет номер телефона.
Аргумент искомое_значение может быть значением (числом, текстом или логическим значением) или ссылкой на ячейку, содержащую такое значение.
-
Просматриваемый_массив Обязательный аргумент. Диапазон ячеек, в которых производится поиск.
-
Тип_сопоставления. Необязательный аргумент. Число -1, 0 или 1. Аргумент тип_сопоставления указывает, каким образом в Microsoft Excel искомое_значение сопоставляется со значениями в аргументе просматриваемый_массив. По умолчанию в качестве этого аргумента используется значение 1.
В приведенной ниже таблице описано, как функция находит значения в зависимости от аргумента тип_сопоставления.
Тип_сопоставления |
Поведение |
1 или опущен |
Функция ПОИСКПОЗ находит наибольшее значение, которое меньше или равно значению аргумента искомое_значение. Просматриваемый_массив должен быть упорядочен по возрастанию: …, -2, -1, 0, 1, 2, …, A-Z, ЛОЖЬ, ИСТИНА. |
0 |
Функция ПОИСКПОЗ находит первое значение, равное аргументу искомое_значение. Просматриваемый_массив может быть не упорядочен. |
-1 |
Функция ПОИСКПОЗ находит наименьшее значение, которое больше или равно значению аргумента искомое_значение. Просматриваемый_массив должен быть упорядочен по убыванию: ИСТИНА, ЛОЖЬ, Z — A, …, 2, 1, 0, -1, -2, … и т. д. |
-
Функция ПОИСКПОЗ возвращает не само значение, а его позицию в аргументе просматриваемый_массив. Например, функция ПОИСКПОЗ(«б»;{«а»;»б»;»в«};0) возвращает 2 — относительную позицию буквы «б» в массиве {«а»;»б»;»в»}.
-
Функция ПОИСКПОЗ не различает регистры при сопоставлении текста.
-
Если функция ПОИСКПОЗ не находит соответствующего значения, возвращается значение ошибки #Н/Д.
-
Если тип_сопоставления равен 0 и искомое_значение является текстом, то искомое_значение может содержать подстановочные знаки: звездочку (*) и вопросительный знак (?). Звездочка соответствует любой последовательности знаков, вопросительный знак — любому одиночному знаку. Если нужно найти сам вопросительный знак или звездочку, перед ними следует ввести знак тильды (~).
Пример
Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.
Продукт |
Количество |
|
Бананы |
25 |
|
Апельсины |
38 |
|
Яблоки |
40 |
|
Груши |
41 |
|
Формула |
Описание |
Результат |
=ПОИСКПОЗ(39;B2:B5,1;0) |
Так как точного соответствия нет, возвращается позиция ближайшего меньшего элемента (38) в диапазоне B2:B5. |
2 |
=ПОИСКПОЗ(41;B2:B5;0) |
Позиция значения 41 в диапазоне B2:B5 |
4 |
=ПОИСКПОЗ(40;B2:B5;-1) |
Возвращает сообщение об ошибке, так как диапазон B2:B5 упорядочен не по убыванию. |
#Н/Д |
Нужна дополнительная помощь?
Skip to content
В этой статье объясняется с примерами формул, как использовать функцию ПОИСКПОЗ в Excel. Также вы узнаете, как улучшить формулы поиска, создав динамическую формулу с функциями ВПР и ПОИСКПОЗ.
В Microsoft Excel существует множество различных функций, которые могут помочь вам найти определенное значение в диапазоне ячеек, и ПОИСКПОЗ (MATCH на английском) — одна из них. По сути, она определяет относительное положение элемента в массиве значений. Однако функция ПОИСКПОЗ может делать гораздо больше.
- Функция ПОИСКПОЗ — пошаговая инструкция
- Поиск частичного совпадения с подстановочными знаками
- ПОИСКПОЗ с учетом регистра
- ПОИСКПОЗ и несколько условий
- Как сравнить столбцы при помощи ПОИСКПОЗ
- Совместное использование ВПР и ПОИСКПОЗ
- Использование ГПР и ПОИСКПОЗ
Функция ПОИСКПОЗ Excel — пошаговая инструкция
Функция ПОИСКПОЗ в Excel ищет указанное значение в массиве и возвращает относительное положение этого значения.
Рассмотрим пошагово, как составить формулу ПОИСКПОЗ:
ПОИСКПОЗ(искомое_значение; массив_поиска, [тип_совпадения])
Шаг 1. Искомое_значение (обязательный аргумент) — значение, которое вы хотите найти. Это может быть число, текстовое или логическое значение, а также ссылка на ячейку.
Шаг 2. Массив_поиска (обязательно) — диапазон ячеек для поиска.
Шаг 3. Указываем Тип_совпадения (необязательно) — определяет тип соответствия. Это может быть одно из следующих значений: 1, 0, -1. Аргумент, установленный в 0, возвращает только точное совпадение, в то время как два других значения допускают приблизительное совпадение.
- 1 или опущено (по умолчанию) — найти наибольшее значение в массиве поиска, которое меньше или равно значению поиска. Требуется сортировка массива поиска в порядке возрастания, от меньшего к большему или от А до Я.
- 0 — найти первое значение в массиве, точно равное искомому значению. Никакой сортировки не требуется.
- -1 — найти наименьшее значение в массиве, которое больше или равно искомому значению. Массив поиска должен быть отсортирован в порядке убывания, от наибольшего к наименьшему или от Я до A.
Чтобы лучше понять функцию ПОИСКПОЗ, давайте составим простую формулу на основе этих данных: имена учащихся в столбце А и их экзаменационные баллы в столбце В, отсортированные от наибольшего к наименьшему. Чтобы узнать, какое место среди других занимает конкретный ученик (скажем, Елена ), используйте эту простую формулу:
=ПОИСКПОЗ(“Елена”; A2:A8;0)
При желании вы можете поместить искомое значение в какую-либо ячейку (E1 в этом примере) и сослаться на эту ячейку в своей формуле:
=ПОИСКПОЗ(E1; A2:A8;0)
Как вы видите на скриншоте выше, имена расположены не по алфавиту, а потому мы устанавливаем аргументу тип_совпадения значение 0 (точное соответствие). Ведь только этот вариант не требует сортировки в массиве поиска.
Технически формула ПОИСКПОЗ возвращает относительное положение «Елена» в списке. Но поскольку оценки отсортированы от наибольшей суммы к наименьшей, это также говорит нам о том, что Елена занимает пятое место среди 8 учащихся.
4 вещи, которые вы должны знать о функции ПОИСКПОЗ
Как вы только что убедились, использовать ПОИСКПОЗ в Excel достаточно просто. Однако, как и в случае с почти любой другой функцией Excel, есть несколько особенностей, о которых вам следует помнить:
- Функция ПОИСКПОЗ возвращает относительное положение искомого значения в массиве, а не само значение.
- ПОИСКПОЗ нечувствительна к регистру , то есть не различает строчные и прописные символы при работе с текстовыми значениями.
- Если искомый массив содержит несколько вхождений искомого значения, то возвращается позиция первого найденного значения.
- Если искомое значение не найдено в массиве поиска, возвращается ошибка #Н/Д.
Как использовать ПОИСКПОЗ в Excel — примеры формул
Теперь, когда вы знаете основные способы использования функции ПОИСКПОЗ Excel, давайте обсудим еще несколько примеров формул, чуть более сложных.
Частичное совпадение с подстановочными знаками
Как и многие другие функции, ПОИСКПОЗ понимает следующие подстановочные знаки :
- Вопросительный знак (?) — заменяет любой одиночный символ
- Звездочка (*) — заменяет любую последовательность символов
Примечание. Подстановочные знаки можно использовать только тогда, если для параметра тип_совпадения установлено значение 0.
Формула поиска с подстановочными знаками полезна в ситуациях, когда требуется сопоставить не всю текстовую строку, а только некоторые символы или её часть. Чтобы проиллюстрировать это, рассмотрим следующий пример.
Предположим, у вас есть данные о продажах напитков за последний месяц. Вы хотите найти относительную позицию определенного наименования в списке (отсортированном по суммам продаж в порядке убывания), но не можете точно вспомнить полное наименование, хотя помните несколько первых символов.
Предположим, что наименования товаров находятся в диапазоне A2:A11, и вы ищете имя, начинающееся с «доб». Формула выглядит следующим образом:
=ПОИСКПОЗ(«доб*»; A2:A11;0)
Чтобы сделать нашу формулу более универсальной, вы можете ввести искомое значение в какую-либо ячейку (E1 в этом примере) и соединить эту ячейку с подстановочным знаком, например:
=ПОИСКПОЗ(E1&»*»; A2:A11;0)
Как показано на скриншоте ниже, формула возвращает 4, что является позицией «Добрый экзотик»:
Обратите внимание, что напитков «Добрый» в нашем массиве целых три. Но формула останавливает поиск, как только будет найдено первое подходящее соответствие.
Чтобы заменить только один символ в искомом значении, используйте подстановочный знак «?».
Формула ПОИСКПОЗ с учетом регистра
Как упоминалось ранее, функция ПОИСКПОЗ не различает символы верхнего и нижнего регистра.
Чтобы создать формулу поиска с учетом регистра, используйте ПОИСКПОЗ в сочетании с функцией СОВПАД, которая точно сравнивает содержимое ячеек, включая регистр символов.
Вот общая формула с учетом регистра для сопоставления данных:
=ПОИСКПОЗ(ИСТИНА;СОВПАД(искомый массив ; искомое значение );0)
Формула работает по следующей логике:
- Функция СОВПАД (EXACT в английской версии) сравнивает значение с каждым элементом массива поиска. Если сравниваемые ячейки точно равны, функция возвращает значение ИСТИНА, в противном случае — ЛОЖЬ.
- Затем функция ПОИСКПОЗ сравнивает ИСТИНА (которое является ее искомым_значением ) с каждым значением в массиве, возвращаемом функцией СОВПАД, и возвращает позицию первого совпадения.
Пожалуйста, имейте в виду, что это формула массива , которая требует нажатия Ctrl + Shift + Enter
при завершении ее ввода.
Предполагая, что искомое значение находится в ячейке E1, а массив поиска — A2:A9, формула выглядит следующим образом:
=ПОИСКПОЗ(ИСТИНА;СОВПАД(A2:A9;E1);0)
На скриншоте показана формула поиска соответствия с учетом регистра в Excel:
Как видите, формула различает регистр букв и по этой причине «А-201» было признано неподходящим.
ПОИСКПОЗ и несколько условий
Выше мы рассматривали функцию ПОИСКПОЗ с одним условием. Но на практике очень часто критериев поиска бывает несколько. Давайте рассмотрим такой случай.
Предположим, у нас есть список продаж отдельных товаров в нескольких регионах. Нужно найти первую подходящую позицию в списке для нужного товара и заданного региона.
Вот формула ПОИСКПОЗ для нескольких условий:
=ПОИСКПОЗ(1;(B2:B12=G1)*(C2:C12=G2);0)
Давайте разбираться.
Наши два условия мы записываем в виде выражения (B2:B12=G1)*(C2:C12=G2). Первое условие (B2:B12=G1) означает, что мы сравниваем каждое из значений в столбце «Регион» с целью «Север», которая записана в G1. Получаем массив {ЛОЖЬ:ИСТИНА:ИСТИНА:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ}
Аналогично каждый из товаров сравниваем с «Яблоки» из G2. Аналогично получаем результат {ИСТИНА:ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ИСТИНА}.
После перемножения этих массивов получаем матрицу единиц и нулей: {0:0:0:1:0:0:0:0:1:0:0}
Здесь единицы означают те позиции, в которых оба условия выполняются.
И вот в этом массиве функция ПОИСКПОЗ ищет первую единицу. И находит ее в 4-й позиции.
Обратите внимание, что в наших данных есть две строки, в которых выполняются оба условия — товар и регион. Но функция ПОИСКПОЗ ищет в массиве только первое совпадение и после этого поиск останавливается.
Думаю, вы понимаете, что совершенно аналогичным образом можно вести поиск по трём и большему количеству условий.
Номер позиции в данном случае для нас может быть не так уж и важен сам по себе. Но зато, зная его, мы можем при помощи функции ИНДЕКС извлечь значение из любого столбца в этой позиции. Более подробно об этом читайте: ИНДЕКС+ПОИСКПОЗ с несколькими условиями.
Как сравнить столбцы при помощи ПОИСКПОЗ
Проверка двух списков на совпадения и различия — одна из наиболее распространенных задач в Excel, и ее можно выполнить различными способами. Формула ЕНД/ПОИСКПОЗ является одним из них:
ЕСЛИ(ЕНД(ПОИСКПОЗ( 1-е значение в Списке1 , Списке2 , 0)), «Нет в Списке 1», «»)
Для любого значения списка 2, которого нет в списке 1, формула возвращает « Нет в списке 1 ».
Рассмотрим пошагово:
- Функция ПОИСКПОЗ ищет значение из списка 1 в списке 2. Если значение найдено, оно возвращает его относительное положение, в противном случае получается ошибка #Н/Д.
- Функция ЕНД в Excel выполняет только одну работу — проверяет наличие ошибок #Н/Д (что означает «недоступно»). Если обрабатываемое ею значение является ошибкой #Н/Д, функция возвращает значение ИСТИНА, в противном случае – ЛОЖЬ. В нашем случае ИСТИНА означает, что значение из списка 1 не найдено в списке 2 (т. е. функция ПОИСКПОЗ возвращает ошибку).
- Поскольку вам может быть не слишком понятным видеть ИСТИНА для значений, которые не отображаются в списке 1, вы оборачиваете функцию ЕСЛИ вокруг ЕНД, чтобы вместо ИСТИНА отображалось « Нет в списке 1 » или любой другой текст, который вы хотите.
Например, чтобы сравнить значения в столбце B со значениями в столбце A, формула может быть записана так (где B2 — самая верхняя ячейка):
=ЕСЛИ(ЕНД(ПОИСКПОЗ(B2;A:A;0)); «Нет в списке 1»; «»)
Как вы помните, функция ПОИСКПОЗ в Excel сама по себе нечувствительна к регистру. Чтобы она различала регистр символов, вставьте функцию СОВПАД (EXACT по английски) в аргумент массив_поиска и не забудьте нажать Ctrl + Shift + Enter
, чтобы ввести эту формулу массива :
{=ЕСЛИ(ЕНД(ПОИСКПОЗ(ИСТИНА; СОВПАД(A:A; B2);0)); «Нет в списке 1»; «»)}
На следующем рисунке показаны обе формулы в действии:
Быть может, вам также будет интересен этот материал: 5 способов сравнения ячеек в Excel.
Совместное использование ВПР и ПОИСКПОЗ
В этом примере предполагается, что у вас уже есть базовые знания о функции ВПР в Excel . И если вы работали с ВПР, то есть вероятность, что вы столкнулись с ее многочисленными ограничениями (подробный обзор которых можно найти в статье Почему не работает функция ВПР в Excel ) и ищете более надежную и универсальную альтернативу.
Один из самых досадных недостатков ВПР заключается в том, что она перестает корректно работать после вставки или удаления столбца в таблице поиска. Это происходит потому, что функция ВПР извлекает совпадающее значение на основе указанного вами номера возвращаемого столбца (номер индекса). Поскольку номер индекса «жестко запрограммирован» в формуле, Excel не может изменить его, когда в таблицу добавляются или удаляются новые столбцы.
Функция ПОИСКПОЗ в Excel работает с относительным положением искомого значения, что идеально подходит для аргумента номер_стролбца функции ВПР. Другими словами, вместо указания возвращаемого столбца в виде статического числа вы используете ПОИСКПОЗ, чтобы найти текущую позицию этого столбца.
Чтобы упростить понимание, давайте снова воспользуемся таблицей с экзаменационными баллами студентов (аналогичной той, которую мы использовали в начале этой статьи). Но на этот раз мы будем получать реальную оценку, а не ее относительное положение.
Предполагая, что искомое значение находится в ячейке F1, значения таблицы расположены в $A$1:$C$8 (рекомендуется зафиксировать его с помощью абсолютных ссылок на ячейки, если вы планируете копировать формулу), выражение выглядит следующим образом:
=ВПР($G$1;$A$1:$С$8; 2; ЛОЖЬ)
Третий аргумент ( номер столбца ) имеет значение 2, потому что результат Теста 1 , который мы хотим получить, является вторым столбцом в таблице. Как вы можете видеть на скриншоте ниже, эта обычная формула ВПР работает хорошо.
Но только до тех пор, пока вы не вставите или не удалите какие-то столбцы:
Как видите, если мы вставляем дополнительный столбец, то формула теперь извлекает неверные данные. Она по-прежнему ссылается на второй столбец, в то время как данные Тест 1 сместились в третий.
Чтобы предотвратить подобные вещи, вы можете сделать свою формулу ВПР более гибкой, включив в нее функцию ПОИСКПОЗ:
ПОИСКПОЗ($F$2;$A$1:$С$1;0)
Где:
- F2 — это искомое значение, которое в точности совпадает с именем возвращаемого столбца, т. е. столбца, из которого вы хотите извлечь значение ( Тест 1 в этом примере).
- A1:C1 — массив поиска, содержащий заголовки таблицы.
А теперь запишите эту формулу в аргумент номер_столбца вашей формулы ВПР, например:
=ВПР($G$1;$A$1:$D$8; ПОИСКПОЗ($F$2;$A$1:$С$1;0); ЛОЖЬ)
И убедитесь, что формула работает безупречно, независимо от того, сколько столбцов вы добавляете или удаляете.
Вставляем столбец с итоговым тестом:
Формула автоматически изменяется и продолжает работать, возвращая верный результат:
=ВПР($G$1;$A$1:$D$8; ПОИСКПОЗ($F$2;$A$1:$D$1;0); ЛОЖЬ)
Использование ГПР и ПОИСКПОЗ
Аналогичным образом вы можете использовать функцию ПОИСКПОЗ в Excel, чтобы улучшить свои формулы ГПР . Общий принцип, по сути, такой же, как и в случае ВПР: вы используете функцию ПОИСКПОЗ, чтобы получить относительное положение возвращаемого столбца, и передаете это число аргументу номер_строки вашей формулы ГПР.
Предположим, что искомое значение находится в ячейке B5, данные таблицы — B1:H3, имя возвращаемой строки (значение поиска для ПОИСКПОЗ) — в ячейке A6, а заголовки строк — A1:A3.
Тогда формула выглядит следующим образом:
=ГПР(B5;B1:H3;ПОИСКПОЗ(A6; A1:A3;0);ЛОЖЬ)
Как вы только что видели, комбинация ВПР/ГПР и ПОИСКПОЗ, безусловно, является улучшением по сравнению с обычными формулами. Однако функция ПОИСКПОЗ не устраняет всех их ограничений и недостатков. В частности, эта формула ВПР по-прежнему не может делать «левый поиск», а ГПР не может выполнять поиск ни в одной строке, кроме самой верхней.
Чтобы преодолеть вышеуказанные (и некоторые другие) ограничения, научитесь использовать комбинацию ИНДЕКС+ПОИСКПОЗ, которая обеспечивает действительно мощный и универсальный способ поиска в Excel, превосходящий ВПР и ГПР во многих отношениях.
Подробное руководство и примеры формул можно найти в ИНДЕКС и ПОИСКПОЗ в Excel — лучшей альтернативе ВПР .
Вот как можно использовать формулы ПОИСКПОЗ в Excel для быстрого поиска в массиве данных. Надеемся, что примеры, рассмотренные в этом руководстве, окажутся полезными в вашей работе.
Основное назначение этой функции в том, чтобы искать позицию заданного элемента в наборе значений. Чаще всего она применяется для поиска порядкового номера ячейки в диапазоне, где лежит нужное нам значение.
Синтаксис этой функции следующий:
=ПОИСКПОЗ(Что_ищем; Где_ищем; Режим_поиска)
где
- Что_ищем — это значение, которое надо найти
- Где_ищем — это одномерный диапазон или массив (строка или столбец), где производится поиск
- Режим_поиска — как мы ищем: точно (0), с округлением в большую строну (-1) или в меньшую сторону (1)
Давайте рассмотрим несколько полезных вариантов ее применения на практике.
Точный поиск
Классический сценарий — поиск точного текстового совпадения для нахождения позиции нужного нам текста или числа в списке:
Поиск первой или последней текстовой ячейки
Если в качестве искомого значения задать звездочку, то функция будет искать первую ячейку с текстом и выдавать её позицию. Для поиска последней текстовой ячейки можно изменить третий аргумент Режим_поиска с нуля на минус 1:
Числа и пустые ячейки в этом случае игнорируются.
Поиск ближайшего числа или даты
Если последний аргумент задать равным 1 или -1, то можно реализовать поиск ближайшего наименьшего или наибольшего числа. Таблица при этом обязательно должна быть отсортирована по возрастанию или убыванию соответственно. В общем и целом, это чем-то похоже на интервальный просмотр у функции ВПР (VLOOKUP), но там возможен только поиск ближайшего наименьшего, а здесь — есть выбор.
Например, нам нужно выбрать генератор из прайс-листа для расчетной мощности в 47 кВт. Если последний аргумент задать равным 1 и отсортировать таблицу по возрастанию, то мы найдем ближайшую наименьшую по мощности модель (Зверь):
Если же третий аргумент равен -1 и таблица отсортирована по убыванию, то мы найдем ближайшую более мощную модель (Бомба):
Связка функций ПОИСКПОЗ и ИНДЕКС
Очень часто функция ПОИСКПОЗ используется в связке с другой крайне полезной функцией — ИНДЕКС (INDEX), которая умеет извлекать данные из диапазона по номеру строки-столбца, реализуя, фактически, «левый ВПР».
Так, в предыдущем примере получить не номер, а название модели генератора можно очень легко:
Ну, и поскольку Excel внутри хранит и обрабатывает даты как числа, то подобный подход на 100% работает и с датами. Например, мы можем легко определить на каком этапе сейчас находится наш проект:
Принципиальное ограничение функции ПОИСКПОЗ состоит в том, что она умеет искать только в одномерных массивах (т.е. строчке или столбце), но никто не запрещает использовать сразу два ПОИСКПОЗа вложенных в ИНДЕКС, чтобы реализовать двумерный поиск по строке и столбцу одновременно:
Ссылки по теме
- 5 вариантов применения функции ИНДЕКС (INDEX)
- Интервальный просмотр с помощью функции ВПР (VLOOKUP)
- Поиск последнего значения в строке или столбце
- Как создать авторастягивающийся диапазон с автоподстройкой размеров
Совместное использование функций ИНДЕКС и ПОИСКПОЗ в Excel – хорошая альтернатива ВПР, ГПР и ПРОСМОТР. Эта связка универсальна и обладает всеми возможностями этих функций. А в некоторых случаях, например, при двумерном поиске данных на листе, окажется просто незаменимой. В данном уроке мы последовательно разберем функции ПОИСКПОЗ и ИНДЕКС, а затем рассмотрим пример их совместного использования в Excel.
Более подробно о функциях ВПР и ПРОСМОТР.
Содержание
- Функция ПОИСКПОЗ в Excel
- Функция ИНДЕКС в Excel
- Совместное использование ПОИСКПОЗ и ИНДЕКС в Excel
Функция ПОИСКПОЗ в Excel
Функция ПОИСКПОЗ возвращает относительное расположение ячейки в заданном диапазоне Excel, содержимое которой соответствует искомому значению. Т.е. данная функция возвращает не само содержимое, а его местоположение в массиве данных.
Например, на рисунке ниже формула вернет число 5, поскольку имя «Дарья» находится в пятой строке диапазона A1:A9.
В следующем примере формула вернет 3, поскольку число 300 находится в третьем столбце диапазона B1:I1.
Из приведенных примеров видно, что первым аргументом функции ПОИСКПОЗ является искомое значение. Вторым аргументом выступает диапазон, который содержит искомое значение. Также функция имеет еще и третий аргумент, который задает тип сопоставления. Он может принимать один из трех вариантов:
В одиночку функция ПОИСКПОЗ, как правило, не представляет особой ценности, поэтому в Excel ее очень часто используют вместе с функцией ИНДЕКС.
Функция ИНДЕКС в Excel
Функция ИНДЕКС возвращает содержимое ячейки, которая находится на пересечении заданных строки и столбца. Например, на рисунке ниже формула возвращает значение из диапазона A1:C4, которое находится на пересечении 3 строки и 2 столбца.
Стоит отметить, что номера строк и столбцов задаются относительно верхней левой ячейки диапазона. Например, если ту же таблицу расположить в другом диапазоне, то формула вернет тот же результат:
Если массив содержит только одну строку или один столбец, т.е. является вектором, то второй аргумент функции ИНДЕКС указывает номер значения в этом векторе. При этом третий аргумент указывать необязательно.
Например, следующая формула возвращает пятое значение из диапазона A1:A12 (вертикальный вектор):
Данная формула возвращает третье значение из диапазона A1:L1(горизонтальный вектор):
Совместное использование ПОИСКПОЗ и ИНДЕКС в Excel
Если Вы уже работали с функциями ВПР, ГПР и ПРОСМОТР в Excel, то должны знать, что они осуществляют поиск только в одномерном массиве. Но иногда приходится сталкиваться с двумерным поиском, когда соответствия требуется искать сразу по двум параметрам. Именно в таких случаях связка ПОИСКПОЗ и ИНДЕКС в Excel оказывается просто незаменимой.
На рисунке ниже представлена таблица, которая содержит месячные объемы продаж каждого из четырех видов товара. Наша задача, указав требуемый месяц и тип товара, получить объем продаж.
Пускай ячейка C15 содержит указанный нами месяц, например, Май. А ячейка C16 — тип товара, например, Овощи. Введем в ячейку C17 следующую формулу и нажмем Enter:
=ИНДЕКС(B2:E13; ПОИСКПОЗ(C15;A2:A13;0); ПОИСКПОЗ(C16;B1:E1;0))
Как видите, мы получили верный результат. Если поменять месяц и тип товара, формула снова вернет правильный результат:
В данной формуле функция ИНДЕКС принимает все 3 аргумента:
- Первый аргумент – это диапазон B2:E13, в котором мы осуществляем поиск.
- Вторым аргументом функции ИНДЕКС является номер строки. Номер мы получаем с помощью функции ПОИСКПОЗ(C15;A2:A13;0). Для наглядности вычислим, что же возвращает нам данная формула:
- Третьим аргументом функции ИНДЕКС является номер столбца. Этот номер мы получаем с помощью функции ПОИСКПОЗ(C16;B1:E1;0). Для наглядности вычислим и это значение:
Если подставить в исходную громоздкую формулу вместо функций ПОИСКПОЗ уже вычисленные данные из ячеек D15 и D16, то формула преобразится в более компактный и понятный вид:
=ИНДЕКС(B2:E13;D15;D16)
Как видите, все достаточно просто!
На этой прекрасной ноте мы закончим. В этом уроке Вы познакомились еще с двумя полезными функциями Microsoft Excel – ПОИСКПОЗ и ИНДЕКС, разобрали возможности на простых примерах, а также посмотрели их совместное использование. Надеюсь, что данный урок Вам пригодился. Оставайтесь с нами и успехов в изучении Excel.
Оцените качество статьи. Нам важно ваше мнение:
Функция
ПОИСКПОЗ(
)
, английский вариант MATCH(),
возвращает позицию значения в диапазоне ячеек. Например, если в ячейке
А10
содержится значение «яблоки», то формула
=ПОИСКПОЗ («яблоки»;A9:A20;0)
вернет 2, т.е. искомое значение «яблоки» содержится во второй ячейке диапазона
A9:A20
:
А9
— первая ячейка (предполагается, что в ней не содержится значение «яблоки»),
А10
— вторая,
А11
— третья и т.д. (подсчет позиции производится от верхней ячейки)
.
Функция
ПОИСКПОЗ()
возвращает позицию искомого значения, а не само значение. Например:
ПОИСКПОЗ(«б»;{«а»;»б»;»в»;»б»};0)
возвращает число 2 — относительную позицию буквы «б» в массиве {«а»;»б»;»в»;»б»}. Позиция второй буквы «б» будет проигнорирована, функция вернет позицию только первой буквы. О том как вернуть ВСЕ позиции искомого значения читайте ниже в разделе
Поиск позиций ВСЕХ текстовых значений, удовлетворяющих критерию
.
Синтаксис функции
ПОИСКПОЗ
(
искомое_значение
;
просматриваемый_массив
; тип_сопоставления)
Искомое_значение
— значение, используемое при поиске значения в
просматриваемом_массиве
.
Искомое_значение
может быть значением (числом, текстом или логическим значением (ЛОЖЬ или ИСТИНА)) или ссылкой на ячейку, содержащую число, текст или логическое значение.
Просматриваемый_массив
— непрерывный диапазон ячеек, возможно, содержащих искомые значения.
Просматриваемый_массив
может быть только одностолбцовым диапазоном ячеек, например
А9:А20
или диапазоном, расположенным в одной строке, например,
А2:Е2
. Таким образом формула
=ПОИСКПОЗ(«слива»;A30:B33;0)
работать не будет (выдаст ошибку #Н/Д), так как
Просматриваемый_массив
представляет собой диапазон ячеек размещенный одновременно в нескольких столбцах и нескольких ячейках.
Тип_сопоставления
— число -1, 0 или 1.
Тип_сопоставления
указывает, как MS EXCEL сопоставляет
искомое_значение
со значениями в аргументе
просматриваемый_массив.
-
Если
тип_сопоставления
равен 0, то функция
ПОИСКПОЗ()
находит первое значение, которое в
точности
равно аргументу
искомое_значение
.
Просматриваемый_массив
может быть не упорядочен. -
Если тип_сопоставления равен 1, то функция
ПОИСКПОЗ()
находит наибольшее значение, которое меньше либо равно, чем
искомое_значение
.
Просматриваемый_массив
должен быть упорядочен по возрастанию: …, -2, -1, 0, 1, 2, …, A-Z, ЛОЖЬ, ИСТИНА. Если
тип_сопоставления
опущен, то предполагается, что он равен 1. -
Если
тип_сопоставления
равен -1, то функция
ПОИСКПОЗ()
находит наименьшее значение, которое больше либо равно чем
искомое_значение
.
Просматриваемый_массив
должен быть упорядочен по убыванию: ИСТИНА, ЛОЖЬ, Z-A, …, 2, 1, 0, -1, -2, …, и так далее.
Функция
ПОИСКПОЗ()
не различает
РеГИстры
при сопоставлении текстов.
Если функция
ПОИСКПОЗ()
не находит соответствующего значения, то возвращается значение ошибки #Н/Д.
Поиск позиции в массивах с текстовыми значениями
Произведем поиск позиции в НЕ сортированном списке текстовых значений (диапазон
B7:B13
)
Столбец
Позиция
приведен для наглядности и не влияет на вычисления.
Формула для поиска позиции значения
Груши:
=ПОИСКПОЗ(«груши»;B7:B13;0)
Формула находит первое значение сверху и выводит его позицию в диапазоне, второе значение
Груши
учтено не будет.
Чтобы найти номер строки, а не позиции в искомом диапазоне, можно записать следующую формулу:
=ПОИСКПОЗ(«груши»;B7:B13;0)+СТРОКА($B$6)
Если искомое значение не обнаружено в списке, то будет возвращено значение ошибки #Н/Д. Например, формула
=ПОИСКПОЗ(«грейпфрут»;B7:B13;0)
вернет ошибку, т.к. значения «грейпфрут» в диапазоне ячеек
B7:B13
нет.
В
файле примера
можно найти применение функции при поиске в горизонтальном массиве.
Поиск позиции в массиве констант
Поиск позиции можно производить не только в диапазонах ячеек, но и в
массивах констант
. Например, формула
=ПОИСКПОЗ(«груши»;{«яблоки»;»ГРУШИ»;»мандарины»};0)
вернет значение 2.
Поиск позиции с использованием подстановочных знаков
Если искомое значение точно не известно, то с помощью
подстановочных знаков
можно задать поиск по шаблону, т.е. искомое_значение может содержать знаки шаблона: звездочку (*) и знак вопроса (?). Звездочка соответствует любой последовательности знаков, знак вопроса соответствует любому одиночному знаку.
Предположим, что имеется перечень товаров и мы не знаем точно как записана товарная позиция относящаяся к яблокам:
яблоки
или
яблоко
.
В качестве критерия можно задать
«яблок*»
и формула
=ПОИСКПОЗ(«яблок*»;B53:B62;0)
вернет позицию текстового значения, начинающегося со слова
яблок
(если она есть в списке).
Подстановочные знаки
следует использовать только для поиска позиции текстовых значений и
Типом сопоставления
= 0 (третий аргумент функции).
Поиск позиций ВСЕХ текстовых значений, удовлетворяющих критерию
Функция
ПОИСКПОЗ()
возвращает только одно значение. Если в списке присутствует несколько значений, удовлетворяющих критерию, то эта функция не поможет.
Рассмотрим список с
повторяющимися
значениями в диапазоне
B66:B72
. Найдем все позиции значения
Груши
.
Значение
Груши
находятся в позициях 2 и 5 списка. С помощью
формулы массива
=(«груши»=$B$66:$B$72)*(СТРОКА($B$66:$B$72)-СТРОКА($D$65))
можно найти все эти позиции. Для этого необходимо выделить несколько ячеек (расположенных вертикально), в
Строке формул
ввести вышеуказанную формулу и нажать
CTRL+SHIFT+ENTER
. В позициях, в которых есть значение
Груши
будет выведено соответствующее значение позиции, в остальных ячейках быдет выведен 0.
C помощью другой
формулы массива
=НАИБОЛЬШИЙ((«груши»=$B$66:$B$72)*(СТРОКА($B$66:$B$72)-СТРОКА($D$65));СТРОКА()-СТРОКА($D$65))
можно отсортировать найденные позиции, чтобы номера найденных позиций отображались в первых ячейках (см.
файл примера
).
Поиск позиции в массивах с Числами
1. Произведем поиск позиции в НЕ сортированном списке числовых значений (диапазон
B8:B14
)
Столбец
Позиция
приведен для наглядности и не влияет на вычисления.
Найдем позицию значения 30 с помощью формулы
=ПОИСКПОЗ(30;B8:B14;0)
Формула ищет
точное
значение 30. Если в списке его нет, то будет возвращена ошибка #Н/Д.
2. Произведем поиск позиции в
отсортированном
по возрастанию списке числовых значений (диапазон
B31:B37
)
Сортированные списки позволяют искать не только точные значения (их позицию), но и позицию
ближайшего
значения. Например, в списке на картинке ниже нет значения 45, но можно найти позицию наибольшего значения, которое меньше либо равно, чем искомое значение, т.е. позицию значения 40.
Это можно сделать с помощью формулы
=ПОИСКПОЗ(45;B31:B37;1)
Обратите внимание, что тип сопоставления =1 (третий аргумент функции).
3. Поиск позиции в списке
отсортированном
по убыванию выполняется аналогично, но с типом сопоставления = -1. В этом случае функция
ПОИСКПОЗ()
находит наименьшее значение, которое больше либо равно чем искомое значение.
Функции ПОИСКПОЗ() и ИНДЕКС()
Функции
ПОИСКПОЗ()
и
ИНДЕКС()
часто используются вместе, т.к. позволяют по найденной позиции в одном диапазоне вывести соответствующее значение из другого диапазона. Рассмотрим пример.
Найдем количество заданного товара на определенном складе. Для этого используем формулу
=ИНДЕКС(B67:E71;ПОИСКПОЗ(A74;A67:A71;0);ПОИСКПОЗ(C74;B66:E66;0))
В
файле примера
, соответствующий столбец и строка выделены с помощью
Условного форматирования
.
СОВЕТ:
Подробнее о поиске позиций можно прочитать в соответствующем разделе сайта:
Поиск позиции
.
С помощью функций
ПОИСКПОЗ()
и
ИНДЕКС()
можно заменить функцию
ВПР()
, об этом читайте в статье о
функции ВПР()
.