Найти недостающие значения
На чтение 2 мин. Просмотров 6.5k.
= ЕСЛИ( СЧЕТЕСЛИ ( список ; значение ); «OK» ; «Отсутствует» )
Если вы хотите выяснить, какие значения в одном списке отсутствуют из другого списка, вы можете использовать простую формулу, основанную на функции СЧЕТЕСЛИ.
Функция СЧЕТЕСЛИ подсчитывает ячейки, которые отвечают критериям, возвращая число найденных вхождений. Если такие ячейки не найдены, СЧЕТЕСЛИ возвращает ноль.
В показанном примере, формула в G5 является:
=ЕСЛИ(СЧЁТЕСЛИ($B$5:$B$10;F5);»ОК»; «Отсутствует»)
Где «список» является именованный диапазон, что соответствует диапазону B6: B11.
Функция ЕСЛИ требует логического теста, чтобы вернуть значение ИСТИНА или ЛОЖЬ. В этом случае, если значение найдено, положительное число возвращается СЧЕТЕСЛИ, который имеет значение ИСТИНА, в результате чего, если вернуть «ОК». Если значение не найдено, возвращается ноль, который имеет значение ЛОЖЬ, и ЕСЛИ возвращает «Отсутствует».
Количество пропущенных значений
=СУММПРОИЗВ(—(СЧЁТЕСЛИ(B5:B10;F5:F7)=0))
Для подсчета значений в одном списке, которые отсутствуют в другом списке, вы можете использовать формулу, основанную на функциях СЧЕТЕСЛИ и СУММПРОИЗВ.
Функции СЧЕТЕСЛИ проверяет значения в диапазоне от критериев. Часто, только один критерий подается, но в этом случае мы поставляем больше чем один критерий.
Для диапазона, мы даем СЧЕТЕСЛИ именованному диапазону лист1 (B6: B11) и критериям мы обеспечиваем именованный диапазон лист2 (F6: F8).
Потому что мы даем СЧЕТЕСЛИ более чем один критерий, мы получим более одного результата в массиве, который выглядит следующим образом: {2; 1; 0}
Мы хотим, чтобы рассчитывались только те значения, которые отсутствуют, которые по определению имеют счетчик, равный нулю, поэтому мы преобразуем эти значения ИСТИНА и ЛОЖЬ с «= 0» заявлением, что дает: {ЛОЖЬ; ЛОЖЬ; ИСТИНА}
Тогда мы изменим значения ИСТИНА/ЛОЖЬ в 1 и 0 с двойным отрицательным оператором (-), который производит: {0, 0, 1}
Наконец, мы используем СУММПРОИЗВ, чтобы сложить элементы в массиве и получить общее количество пропущенных значений.
Поиск значений в списке данных
Excel для Microsoft 365 Excel для Интернета Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007 Еще…Меньше
Предположим, что вы хотите найти расширение телефона сотрудника, используя его номер эмблемы или правильную ставку комиссионных за объем продаж. Вы можете искать данные для быстрого и эффективного поиска определенных данных в списке, а также для автоматической проверки правильности данных. После поиска данных можно выполнить вычисления или отобразить результаты с возвращаемой величиной. Существует несколько способов поиска значений в списке данных и отображения результатов.
Что необходимо сделать
-
Точное совпадение значений по вертикали в списке
-
Подыыывка значений по вертикали в списке с помощью приблизительного совпадения
-
Подстановка значений по вертикали в списке неизвестного размера с использованием точного совпадения
-
Точное совпадение значений по горизонтали в списке
-
Подыыывка значений по горизонтали в списке с использованием приблизительного совпадения
-
Создание формулы подступа с помощью мастера подметок (только в Excel 2007)
Точное совпадение значений по вертикали в списке
Для этого можно использовать функцию ВLOOKUP или сочетание функций ИНДЕКС и НАЙТИПОЗ.
Примеры ВРОТ
Дополнительные сведения см. в этой информации.
Примеры индексов и совпадений
Что означает:
=ИНДЕКС(нужно вернуть значение из C2:C10, которое будет соответствовать ПОИСКПОЗ(первое значение «Капуста» в массиве B2:B10))
Формула ищет в C2:C10 первое значение, соответствующее значению «Ольга» (в B7), и возвращает значение в C7(100),которое является первым значением, которое соответствует значению «Ольга».
Дополнительные сведения см. в функциях ИНДЕКС иФУНКЦИЯ MATCH.
К началу страницы
Подыыывка значений по вертикали в списке с помощью приблизительного совпадения
Для этого используйте функцию ВЛВП.
Важно: Убедитесь, что значения в первой строке отсортировали в порядке возрастания.
В примере выше ВРОТ ищет имя учащегося, у которого 6 просмотров в диапазоне A2:B7. В таблице нет записи для 6 просмотров, поэтому ВРОТ ищет следующее самое высокое совпадение меньше 6 и находит значение 5, связанное с именем Виктор,и таким образом возвращает Его.
Дополнительные сведения см. в этой информации.
К началу страницы
Подстановка значений по вертикали в списке неизвестного размера с использованием точного совпадения
Для этого используйте функции СМЕЩЕНИЕ и НАЙТИВМЕСЯК.
Примечание: Используйте этот подход, если данные в диапазоне внешних данных обновляются каждый день. Вы знаете, что цена находится в столбце B, но вы не знаете, сколько строк данных возвращает сервер, а первый столбец не отсортировали по алфавиту.
C1 — это левые верхние ячейки диапазона (также называемые начальной).
MATCH(«Оранжевая»;C2:C7;0) ищет «Оранжевые» в диапазоне C2:C7. В диапазон не следует включать запускаемую ячейку.
1 — количество столбцов справа от начальной ячейки, из которых должно быть возвращено значение. В нашем примере возвращается значение из столбца D, Sales.
К началу страницы
Точное совпадение значений по горизонтали в списке
Для этого используйте функцию ГГПУ. См. пример ниже.
Г ПРОСМОТР ищет столбец «Продажи» и возвращает значение из строки 5 в указанном диапазоне.
Дополнительные сведения см. в сведениях о функции Г ПРОСМОТР.
К началу страницы
Подыыывка значений по горизонтали в списке с использованием приблизительного совпадения
Для этого используйте функцию ГГПУ.
Важно: Убедитесь, что значения в первой строке отсортировали в порядке возрастания.
В примере выше ГЛЕБ ищет значение 11000 в строке 3 указанного диапазона. Она не находит 11000, поэтому ищет следующее наибольшее значение меньше 1100 и возвращает значение 10543.
Дополнительные сведения см. в сведениях о функции Г ПРОСМОТР.
К началу страницы
Создание формулы подступа с помощью мастера подметок (толькоExcel 2007 )
Примечание: В Excel 2010 больше не будет надстройки #x0. Эта функция была заменена мастером функций и доступными функциями подменю и справки (справка).
В Excel 2007 создается формула подытов на основе данных на основе данных на основе строк и столбцов. Если вы знаете значение в одном столбце и наоборот, мастер под поисков помогает находить другие значения в строке. В формулах, которые он создает, используются индекс и MATCH.
-
Щелкните ячейку в диапазоне.
-
На вкладке Формулы в группе Решения нажмите кнопку Под поиск.
-
Если команда Подытов недоступна, вам необходимо загрузить мастер под надстройка подытогов.
Загрузка надстройки «Мастер подстройок»
-
Нажмите кнопку Microsoft Office
, выберите Параметры Excel и щелкните категорию Надстройки.
-
В поле Управление выберите элемент Надстройки Excel и нажмите кнопку Перейти.
-
В диалоговом окне Доступные надстройки щелкните рядом с полем Мастер подстрок инажмите кнопку ОК.
-
Следуйте инструкциям мастера.
К началу страницы
Нужна дополнительная помощь?
поиск в одной таблице значений, которых нет в другой. |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Хитрости »
15 Май 2011 512019 просмотров
Как найти значение в другой таблице или сила ВПР
- Задача и её решение при помощи ВПР
- Описание аргументов ВПР
- Что важно всегда помнить при работе с ВПР
- Как избежать ошибки #Н/Д(#N/A) в ВПР?
- Как при помощи ВПР искать значение по строке, а не столбцу?
- Решение при помощи ПОИСКПОЗ
- Работа с критериями длиннее 255 символов
Если в двух словах, то ВПР позволяет сравнить данные двух таблиц на основании значений из одного столбца.
Чтобы чуть лучше понять принцип работы ВПР лучше начать с некоего практического примера. Возьмем две таблицы:
рис.1
На картинке выше для удобства они показаны рядом, но на самом деле могут быть расположены на разных листах и даже в разных книгах. Таблицы по сути одинаковые, но фамилии в них расположены в разном порядке, и к тому же в одной заполнены все столбцы, а во второй столбцы ФИО и Отдел. И из первой таблицы необходимо подставить во вторую дату для каждой фамилии. Для трех записей это не проблема и руками сделать — все очевидно. Но в жизни это таблицы на тысячи записей и поиск с подстановкой данных вручную может занять не один час. Вот где ВПР(VLOOKUP) будет весьма кстати. Все, что необходимо — записать в ячейку
C2
второй таблицы(туда, куда необходимо подставить даты из первой таблицы) такую формулу:
=ВПР($A2;Лист1!$A$1:$C$4;3;0)
=VLOOKUP($A2,Лист1!$A$1:$C$4,3,0)
Записать формулу можно либо непосредственно в ячейку, либо воспользовавшись диспетчером функций, выбрав в категории Ссылки и массивы(References & Arrays) функцию ВПР(VLOOKUP) и по отдельности указав нужные критерии. Теперь копируем(
Ctrl
+
C
) ячейку с формулой(С2), выделяем все ячейки столбца
С
до конца данных и вставляем(
Ctrl
+
V
).
Теперь разберем поподробнее саму функцию, её аргументы и некоторые особенности.
ВПР ищет заданное нами значение(аргумент искомое_значение) в первом столбце указанного диапазона(аргумент таблица). Поиск значения всегда происходит сверху вниз(собственно, поэтому функция и называется ВПР: Вертикальный ПРосмотр). Как только функция находит заданное значение — поиск прекращается, ВПР берет строку с найденным значением и смотрит на аргумент номер_столбца. Именно из этого столбца берётся значение, которое мы и видим как итог работы функции. Т.е. в нашем конкретном случае, для ячейки С2 второй таблицы, функция берет фамилию «Петров С.А.»(ячейка $A2 второй таблицы) и ищет её в первом столбце указанной таблицы(Лист1!$A$1:$C$4), т.е. в столбце А. Как только находит(это ячейка А3)
ВПР может вернуть только одно значений — первое, подходящее под критерий. Если искомое значение не найдено(отсутствует в таблице), то результатом функции будет ошибка #Н/Д(#N/A). Не надо этого бояться — это даже полезно. Вы точно будете знать, каких записей нет и таким образом можете сравнивать две таблицы друг с другом. Иногда получается так, что Вы видите: данные есть в обеих таблицах, но ВПР выдает #Н/Д. Значит данные в Ваших таблицах не идентичны. В какой-то из них есть лишние неприметные пробелы(обычно перед значением или после), либо знаки кириллицы перемешаны со знаками латиницы. Так же #Н/Д будет, если критерии числа и в искомой таблице они записаны как текст(как правило в левом верхнем углу такой ячейки появляется зеленый треугольничек), а в итоговой — как числа. Или наоборот.
Описание аргументов ВПР
- Искомое_значение($A2) — это то значение из одной таблицы, которые мы ищем в другой таблице. Т.е. для первой записи второй таблицы это будет Петров С.А.. Здесь можно указать либо непосредственно текст критерия(в этом случае он должен быть в кавычках — =ВПР(«Петров С.А»;Лист1!$A$1:$C$4;3;0), либо ссылку на ячейку, с данным текстом(как в примере функции). Есть небольшой нюанс: так же можно применять символы подстановки: «*» и «?». Это очень удобно, если необходимо найти значения лишь по части строки. Например, можно не вводить полностью «Петров С.А», а ввести лишь фамилию и знак звездочки — «Петров*». Тогда будет выведена любая запись, которая начинается на «Петров». Если же надо найти запись, в которой в любом месте строки встречается фамилия «Петров», то можно указать так: «*петров*». Если хотите найти фамилию Петров и неважно какие инициалы будут у имени-отчества(если ФИО записаны в виде Иванов И.И.), то здесь в самый раз такой вид: «Иванов ?.?.».
Часто необходимо для каждой строки указать свое значение(в столбце А Фамилии и надо их все найти). В таком случае всегда указываются ссылки на ячейки столбца А. Например, в ячейке A2 записано: Иванов. Так же известно, что Иванов есть в другой таблице, но после фамилии могут быть записаны и имя и отчество(или еще что-то). Но нам нужно найти только строку, которая начинается на фамилию. Тогда необходимо записать следующим образом: A2&»*». Эта запись будет равнозначна «Иванов*». В A2 записано Иванов, амперсанд(&) используется для объединения в одну строку двух текстовых значений. Звездочка в кавычках (как и положено быть тексту внутри формулы). Таким образом и получаем:
A2&»*» =>
«Иванов»&»*» =>
«Иванов*»
А полная формула в итоге будет выглядеть так: =ВПР(A2&»*»;Лист1!$A$1:$C$4;3;0)
Очень удобно, если значений для поиска много.
Если надо определить есть ли хоть где-то слово в строке, то звездочки ставим с обеих сторон: «*»&A1&»*» - Таблица(Лист1!$A$1:$C$4) — указывается диапазон ячеек, в первом столбце которых будет просматриваться аргумент Искомое_значение. Диапазон должен содержать данные от первой ячейки с данными до самой последней. Это не обязательно должен быть указанный в примере диапазон. Если строк 100, то Лист1!$A$2:$C$100. Диапазон в аргументе таблица всегда должен быть «закреплен», т.е. содержать знаки доллара($) перед названием столбцов и перед номерами строк(Лист1!$A$1:$C$4).
- Номер_столбца(3) — указывается номер столбца в аргументе Таблица, значения из которого нам необходимо записать в итоговую ячейку в качестве результата. В примере это Дата принятия — т.е. столбец №3. Если бы нужен был отдел, то необходимо было бы указать номер столбца 2, а если бы нам понадобилось просто сравнить есть ли фамилии одной таблицы в другой, то можно было бы указать и 1. Номер столбца всегда указывается числом и не должен быть больше числа столбцов в аргументе Таблица.
если аргумент Таблица имеет слишком большое кол-во столбцов и необходимо вернуть результат из последнего столбца, то совсем необязательно высчитывать их количество. Можно использовать формулу, которая подсчитывает количество столбцов в указанном диапазоне: =ВПР($A2;Лист1!$A$1:$C$4;ЧИСЛСТОЛБ(Лист1!$A$1:$C$4);0). К слову в данном случае Лист1! тоже можно убрать, т.к. функция ЧИСЛОСТОЛБ просто подсчитывает количество столбцов в переданном ей диапазоне и неважно на каком он листе: =ВПР($A2;Лист1!$A$1:$C$4;ЧИСЛСТОЛБ($A$1:$C$4);0).
- Интервальный_просмотр(0) — очень интересный аргумент. Может быть равен либо ИСТИНА либо ЛОЖЬ. Так же допускается указать 1 или 0. 1 = ИСТИНА, 0 = ЛОЖЬ. Если в ВПР указать данный параметр равный 0 или ЛОЖЬ, то будет происходить поиск точного соответствия заданному Искомому_значению. Это не имеет никакого отношения к знакам подстановки(«*» и «?»). Если же использовать 1 или ИСТИНА, то…Совсем в двух словах не объяснить. Если вкратце — ВПР будет искать наиболее похожее значение, подходящее под Искомомое_значение. Иногда очень полезно. Правда, если использовать данный параметр, то необходимо, чтобы список в аргументе Таблица был отсортирован по возрастанию. Обращаю внимание на то, что сортировка необходима только в том случае, если аргумент Интервальный_просмотр равен ИСТИНА или 1. Если же 0 или ЛОЖЬ — сортировка не нужна. Этот аргумент необходимо использовать осторожно — не стоит указывать 1 или ИСТИНА, если нужно найти точное соответствие и уж тем более не стоит использовать, если не понимаете принцип его работы.
Подробнее про работу ВПР с интервальным просмотром, равным 1 или ИСТИНА можно ознакомиться в статье ВПР и интервальный просмотр(range_lookup)
- Таблица всегда должна начинаться с того столбца, в котором ищем Искомое_значение. Т.е. ВПР не умеет искать значение во втором столбце таблицы, а значение возвращать из первого. В лучшем случае ничего найдено не будет и получим ошибку #Н/Д(#N/A), а в худшем результат будет совсем не тот, который должен быть
- аргумент Таблица должен быть «закреплен», т.е. содержать знаки доллара($) перед названием столбцов и перед номерами строк(Лист1!$A$1:$C$4). Это и есть закрепление(если точнее, то это называется абсолютной ссылкой на диапазон). Как это делается. Выделяете текст ссылки и жмете клавишу F4 до тех пор, пока не увидите, что и перед обозначением имени столбца и перед номером строки не появились доллары. Если этого не сделать, то при копировании формулы из одной ячейки в остальные аргумент Таблица будет «съезжать» и результат может быть совсем не таким, какой ожидался(в лучшем случае получите ошибку #Н/Д(#N/A)
- номер_столбца не должен превышать общее кол-во столбцов в аргументе таблица, а сама Таблица соответственно должна содержать столбцы от первого(в котором ищем) до последнего(из которого необходимо возвращать значения). В примере указана Лист1!$A$1:$C$4 — всего 3 столбца(A, B, C). Значит не получится вернуть значение из столбца D(4), т.к. в таблице только три столбца. Т.е. если мы запишем формулу так: =ВПР($A2;Лист1!$A$1:$C$4;4;0) — мы получим ошибку #ССЫЛКА!(#REF!).
Если аргументом Таблица указан диапазон $B$1:$C$4 и необходимо вернуть данные из столбца С, то правильно будет указать номер столбца 2. Т.к. аргумент Таблица($B$1:$C$4) содержит только два столбца — В и С. Если же попытаться указать номер столбца 3(каким по счету он является на листе), то получим ошибку #ССЫЛКА!(#REF!), т.к. третьего столбца в указанном диапазоне просто нет.
Многие наверняка заметили, что на картинке у меня попутаны отделы для ФИО(в обеих таблицах ФИО относятся к разным отделам). Это не ошибка записи. В прилагаемом к статье примере показано, как можно одной формулой подставить и отделы и даты, не меняя вручную аргумент Номер_столбца: =ВПР($A2;Лист1!$A$1:$C$4;СТОЛБЕЦ();0). Такой подход сработает, если в обеих таблицах одинаковый порядок столбцов.
Как избежать ошибки #Н/Д(#N/A) в ВПР?
Еще частая проблема — многие не хотят видеть #Н/Д результатом, если совпадение не найдено. Это можно обойти при помощи специальных функций.
Для пользователей Excel 2003 и старше:
=ЕСЛИ(ЕНД(ВПР($A2;Лист1!$A$1:$C$4;3;0));»»;ВПР($A2;Лист1!$A$1:$C$4;3;0))
=IF(ISNA(VLOOKUP($A2,Лист1!$A$1:$C$4,3,0)),»»,VLOOKUP($A2,Лист1!$A$1:$C$4,3,0))
Теперь если ВПР не найдет совпадения, то ячейка будет пустой.
А пользователям версий Excel 2007 и выше будет удобнее использовать функцию
ЕСЛИОШИБКА(IFERROR)
:
=ЕСЛИОШИБКА(ВПР($A2;Лист1!$A$1:$C$4;3;0);»»)
=IFERROR(VLOOKUP($A2,Лист1!$A$1:$C$4,3,0);»»)
Подробнее про различие между использованием ЕСЛИ(ЕНД и ЕСЛИОШИБКА я разбирал в статье: Как в ячейке с формулой вместо ошибки показать 0
Но я бы не рекомендовал использовать
ЕСЛИОШИБКА(IFERROR)
, не убедившись, что ошибки появляются только для реально отсутствующих значений. Иногда ВПР может вернуть #Н/Д и в других ситуациях:
- искомое значение состоит более чем из 255 символов(решение этой проблемы приведено ниже в этой статье: Работа с критериями длиннее 255 символов)
- искомое значение является числом с большим кол-вом знаков после запятой. Excel не может правильно воспринимать такие числа и в итоге ВПР может вернуть ошибку. Правильным решением здесь будет округлить искомое значение хотя бы до 4-х или 5-ти знаков после запятой(конечно, если это допустимо):
=ВПР(ОКРУГЛ($A2;5);Лист1!$A$1:$C$4;3;0)
=VLOOKUP(ROUND($A2,2),Лист1!$A$1:$C$4,3,0) - искомое значение содержит специальные или непечатаемые символы.
В этом случае придется либо избавиться от непечатаемых символов в искомом аргументе:
=ВПР(ПЕЧСИМВ($A2);Лист1!$A$1:$C$4;3;0)
=VLOOKUP(CLEAN($A2),Лист1!$A$1:$C$4,3,0)
либо добавить перед всеми специальными символами(такими как звездочка или вопр.знак) знак тильды(~), чтобы сделать эти знаки просто знаками, а не знаками специального значения(так же работа со специальными(служебными) символами описывалась в статье: Как заменить/удалить/найти звездочку). Добавить символ перед знаком той же тильды можно при помощи функции ПОДСТАВИТЬ(SUBSTITUTE):
=ВПР(ПОДСТАВИТЬ($A2;»~»;»~~»);Лист1!$A$1:$C$4;3;0)
=VLOOKUP(SUBSTITUTE(A2,»~»,»~~»),Лист1!$A$1:$C$4,3,0)
Если необходимо добавить тильду сразу перед несколькими знаками, то делает это обычно так(на примере подстановки одновременно для тильды и звездочки):
=ВПР(ПОДСТАВИТЬ(ПОДСТАВИТЬ($A2;»~»;»~~»);»*»;»~*»);Лист1!$A$1:$C$4;3;0)
=VLOOKUP(SUBSTITUTE(SUBSTITUTE(A2,»~»,»~~»),»*»,»~*»),Лист1!$A$1:$C$4,3,0)
На самом деле ответ будет коротким — ВПР всегда ищет сверху вниз. Слева направо она не умеет. Но зато слева направо умеет искать её сестра ГПР(HLookup) — Горизонтальный
ПР
осмотр.
ГПР ищет заданное значение(аргумент
искомое_значение
) в первой строке указанного диапазона(аргумент
таблица
) и возвращает для него значение из строки таблицы, указанной аргументом номер_строки. Поиск значения всегда происходит слева направо и заканчивается сразу, как только значение найдено. Если значение не найдено, функция возвращает значение ошибки
#Н/Д(#N/A)
.
Если надо найти значение «Иванов» в строке 2 и вернуть значение из строки 5 в таблице
A2:H10
, то формула будет выглядеть так:
=ГПР(«Иванов»;$A$2:$H$10;5;0)
=HLOOKUP(«Иванов»,$A$2:$H$10,5,0)
Все правила и синтаксис функции точно такие же, как у ВПР:
-в искомом значении можно применять символы астерикса(*) и вопр.знака(?) — «Иванов*»;
-таблица должна быть закреплена —
$A$2:$H$10
;
-интервальный просмотр работает по тому же принципу(0 или ЛОЖЬ точный просмотр слева-направо, 1 или ИСТИНА — интервальный).
Общий принцип работы
ПОИСКПОЗ(MATCH)
очень похож на ВПР — функция ищет заданное значение в массиве (в столбце или строке) и возвращает его позицию(порядковый номер в заданном массиве). Т.е. ищет
Искомое_значение
в аргументе
Просматриваемый_массив
и в качестве результата выдает номер позиции найденного значения в
Просматриваемом_массиве
. Именно номер позиции, а не само значение. Если бы мы хотели применить её для таблицы выше, то она была бы такой:
=ПОИСКПОЗ($A2;Лист1!$A$1:$A$4;0)
=MATCH($A2,Лист1!$A$1:$A$4,0)
- Искомое_значение($A2) — непосредственно значение или ссылка на ячейку с искомым значением. Если опираться на пример выше — то это ФИО. Здесь все ровно так же, как и с ВПР. Так же допустимы символы подстановки * и ? и ровно в таком же исполнении.
- Просматриваемый_массив(Лист1!$A$1:$A$4) — указывается ссылка на столбец, в котором необходимо найти искомое значение. В отличии от той же ВПР, где указывается целая таблица, это должен быть именно один столбец, в котором мы собираемся искать Искомое_значение. Если попытаться указать более одного столбца, то функция вернет ошибку.Справедливости ради надо отметить, что можно указать либо столбец, либо строку
- Тип_сопоставления(0) — то же самое, что и Интервальный_просмотр в ВПР. С теми же особенностями. Отличается разве что возможностью поиска наименьшего от искомого или наибольшего.
С основным разобрались. Но ведь нам надо вернуть не номер позиции, а само значение. Значит ПОИСКПОЗ в чистом виде нам не подходит. По крайней мере одна, сама по себе. Но если её использовать вместе с функцией ИНДЕКС(INDEX)(которая возвращает из указанного диапазона значение на пересечении заданных строки и столбца) — то это то, что нам нужно и даже больше.
=ИНДЕКС(Лист1!$A$1:$C$4;ПОИСКПОЗ($A2;Лист1!$A$1:$A$4;0);2)
Такая формула результатом вернет то же, что и ВПР.
Аргументы функции ИНДЕКС
Массив(Лист1!$A$2:$C$4). В качестве этого аргумента мы указываем диапазон, из которого хотим получить значения. Может быть как один столбец, так и несколько. В случае, если столбец один, то последний аргумент функции указывать не обязательно или он всегда будет равен 1(столбец-то всего один). К слову — данный аргумент может совершенно не совпадать с тем, который мы указываем в аргументе Просматриваемый_массив функции ПОИСКПОЗ.
Далее идут Номер_строки и Номер_столбца. Именно в качестве Номера_строки мы и подставляем ПОИСКПОЗ, которая возвращает нам номер позиции в массиве. На этом все и строится. ИНДЕКС возвращает значение из Массива, которое находится в указанной строке(Номер_строки) Массива и указанном столбце(Номер_столбца), если столбцов более одного. Важно знать, что в данной связке кол-во строк в аргументе Массив функции ИНДЕКС и кол-во строк в аргументе Просматриваемый_массив функции ПОИСКПОЗ должно совпадать. И начинаться с одной и той же строки. Это в обычных случаях, если не преследуются иные цели.
Так же как и в случае с ВПР, ИНДЕКС в случае не нахождения искомого значения возвращает #Н/Д. И обойти подобные ошибки можно так же:
Для всех версий Excel(включая 2003 и раньше):
=ЕСЛИ(ЕНД(ПОИСКПОЗ($A2;Лист1!$A$1:$A$4;0));»»;ИНДЕКС(Лист1!$A$1:$C$4;ПОИСКПОЗ($A2;Лист1!$A$2:$A$4;0);2))
Для версий 2007 и выше:
=ЕСЛИОШИБКА(ИНДЕКС(Лист1!$A$1:$C$4;ПОИСКПОЗ($A2;Лист1!$A$1:$A$4;0);2);»»)
Есть у ИНДЕКС-ПОИСКПОЗ и еще одно преимущество перед ВПР. Дело в том, что ВПР не может искать значения, длина строки которых содержит более 255 символов. Это случается редко, но случается. Можно, конечно, обмануть ВПР и урезать критерий:
=ВПР(ПСТР($A2;1;255);ПСТР(Лист1!$A$1:$C$4;1;255);3;0)
но это формула массива. Да и к тому же далеко не всегда такая формула вернет нужный результат. Если первые 255 символов идентичны первым 255 символам в таблице, а дальше знаки различаются — формула этого уже не увидит. Да и возвращает формула исключительно текстовые значения, что в случаях, когда возвращаться должны числа, не очень удобно.
Поэтому лучше использовать такую хитрую формулу:
=ИНДЕКС(Лист1!$A$1:$C$4;СУММПРОИЗВ(ПОИСКПОЗ(ИСТИНА;Лист1!$A$1:$A$4=$A2;0));2)
Здесь я в формулах использовал одинаковые диапазоны для удобочитаемости, но в примере для скачивания они различаются от указанных здесь.
Сама формула построена на возможности функции СУММПРОИЗВ преобразовывать в массивные вычисления некоторых функций внутри неё. В данном случае ПОИСКПОЗ ищет позицию строки, в которой критерий равен значению в строке. Подстановочные символы здесь применить уже не получится.
Ну и все же я рекомендовал бы Вам прочитать подробнее про данные функции в справке.
В прилагаемом к статье примере Вы найдете примеры использования всех описанных случаев и пример того, почему ИНДЕКС и ПОИСКПОЗ порой предпочтительнее ВПР.
Скачать пример
Tips_All_VLookUp.xls (26,0 KiB, 17 435 скачиваний)
Так же см.:
ВПР и интервальный просмотр(range_lookup)
ВПР по двум и более критериям
ВПР с возвратом всех значений
ВПР с поиском по нескольким листам
ВПР_МН
ВПР_ВСЕ_КНИГИ
Как заменить/удалить/найти звездочку?
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
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 для быстрого поиска в массиве данных. Надеемся, что примеры, рассмотренные в этом руководстве, окажутся полезными в вашей работе.