Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).
Описание
В этой статье приведены пошаговые инструкции по поиску данных в таблице (или диапазоне ячеек) с помощью различных встроенных функций Microsoft Excel. Для получения одного и того же результата можно использовать разные формулы.
Создание образца листа
В этой статье используется образец листа для иллюстрации встроенных функций Excel. Рассматривайте пример ссылки на имя из столбца A и возвращает возраст этого человека из столбца C. Чтобы создать этот лист, введите указанные ниже данные в пустой лист Excel.
Введите значение, которое вы хотите найти, в ячейку E2. Вы можете ввести формулу в любую пустую ячейку на том же листе.
A |
B |
C |
D |
E |
||
1 |
Имя |
Правитель |
Возраст |
Поиск значения |
||
2 |
Анри |
501 |
Плот |
Иванов |
||
3 |
Стэн |
201 |
19 |
|||
4 |
Иванов |
101 |
максималь |
|||
5 |
Ларри |
301 |
составляет |
Определения терминов
В этой статье для описания встроенных функций Excel используются указанные ниже условия.
Термин |
Определение |
Пример |
Массив таблиц |
Вся таблица подстановки |
A2: C5 |
Превышающ |
Значение, которое будет найдено в первом столбце аргумента «инфо_таблица». |
E2 |
Просматриваемый_массив |
Диапазон ячеек, которые содержат возможные значения подстановки. |
A2: A5 |
Номер_столбца |
Номер столбца в аргументе инфо_таблица, для которого должно быть возвращено совпадающее значение. |
3 (третий столбец в инфо_таблица) |
Ресулт_аррай |
Диапазон, содержащий только одну строку или один столбец. Он должен быть такого же размера, что и просматриваемый_массив или Лукуп_вектор. |
C2: C5 |
Интервальный_просмотр |
Логическое значение (истина или ложь). Если указано значение истина или опущено, возвращается приближенное соответствие. Если задано значение FALSE, оно будет искать точное совпадение. |
ЛОЖЬ |
Топ_целл |
Это ссылка, на основе которой вы хотите основать смещение. Топ_целл должен ссылаться на ячейку или диапазон смежных ячеек. В противном случае функция СМЕЩ возвращает #VALUE! значение ошибки #ИМЯ?. |
|
Оффсет_кол |
Число столбцов, находящегося слева или справа от которых должна указываться верхняя левая ячейка результата. Например, значение «5» в качестве аргумента Оффсет_кол указывает на то, что верхняя левая ячейка ссылки состоит из пяти столбцов справа от ссылки. Оффсет_кол может быть положительным (то есть справа от начальной ссылки) или отрицательным (то есть слева от начальной ссылки). |
Функции
LOOKUP ()
Функция Просмотр находит значение в одной строке или столбце и сопоставляет его со значением в той же позицией в другой строке или столбце.
Ниже приведен пример синтаксиса формулы подСТАНОВКи.
= Просмотр (искомое_значение; Лукуп_вектор; Ресулт_вектор)
Следующая формула находит возраст Марии на листе «образец».
= ПРОСМОТР (E2; A2: A5; C2: C5)
Формула использует значение «Мария» в ячейке E2 и находит слово «Мария» в векторе подстановки (столбец A). Формула затем соответствует значению в той же строке в векторе результатов (столбец C). Так как «Мария» находится в строке 4, функция Просмотр возвращает значение из строки 4 в столбце C (22).
Примечание. Для функции Просмотр необходимо, чтобы таблица была отсортирована.
Чтобы получить дополнительные сведения о функции Просмотр , щелкните следующий номер статьи базы знаний Майкрософт:
Использование функции Просмотр в Excel
ВПР ()
Функция ВПР или вертикальный просмотр используется, если данные указаны в столбцах. Эта функция выполняет поиск значения в левом столбце и сопоставляет его с данными в указанном столбце в той же строке. Функцию ВПР можно использовать для поиска данных в отсортированных или несортированных таблицах. В следующем примере используется таблица с несортированными данными.
Ниже приведен пример синтаксиса формулы ВПР :
= ВПР (искомое_значение; инфо_таблица; номер_столбца; интервальный_просмотр)
Следующая формула находит возраст Марии на листе «образец».
= ВПР (E2; A2: C5; 3; ЛОЖЬ)
Формула использует значение «Мария» в ячейке E2 и находит слово «Мария» в левом столбце (столбец A). Формула затем совпадет со значением в той же строке в Колумн_индекс. В этом примере используется «3» в качестве Колумн_индекс (столбец C). Так как «Мария» находится в строке 4, функция ВПР возвращает значение из строки 4 В столбце C (22).
Чтобы получить дополнительные сведения о функции ВПР , щелкните следующий номер статьи базы знаний Майкрософт:
Как найти точное совпадение с помощью функций ВПР или ГПР
INDEX () и MATCH ()
Вы можете использовать функции индекс и ПОИСКПОЗ вместе, чтобы получить те же результаты, что и при использовании поиска или функции ВПР.
Ниже приведен пример синтаксиса, объединяющего индекс и Match для получения одинаковых результатов поиска и ВПР в предыдущих примерах:
= Индекс (инфо_таблица; MATCH (искомое_значение; просматриваемый_массив; 0); номер_столбца)
Следующая формула находит возраст Марии на листе «образец».
= ИНДЕКС (A2: C5; MATCH (E2; A2: A5; 0); 3)
Формула использует значение «Мария» в ячейке E2 и находит слово «Мария» в столбце A. Затем он будет соответствовать значению в той же строке в столбце C. Так как «Мария» находится в строке 4, формула возвращает значение из строки 4 в столбце C (22).
Обратите внимание Если ни одна из ячеек в аргументе «число» не соответствует искомому значению («Мария»), эта формула будет возвращать #N/А.
Чтобы получить дополнительные сведения о функции индекс , щелкните следующий номер статьи базы знаний Майкрософт:
Поиск данных в таблице с помощью функции индекс
СМЕЩ () и MATCH ()
Функции СМЕЩ и ПОИСКПОЗ можно использовать вместе, чтобы получить те же результаты, что и функции в предыдущем примере.
Ниже приведен пример синтаксиса, объединяющего смещение и сопоставление для достижения того же результата, что и функция Просмотр и ВПР.
= СМЕЩЕНИЕ (топ_целл, MATCH (искомое_значение; просматриваемый_массив; 0); Оффсет_кол)
Эта формула находит возраст Марии на листе «образец».
= СМЕЩЕНИЕ (A1; MATCH (E2; A2: A5; 0); 2)
Формула использует значение «Мария» в ячейке E2 и находит слово «Мария» в столбце A. Формула затем соответствует значению в той же строке, но двум столбцам справа (столбец C). Так как «Мария» находится в столбце A, формула возвращает значение в строке 4 в столбце C (22).
Чтобы получить дополнительные сведения о функции СМЕЩ , щелкните следующий номер статьи базы знаний Майкрософт:
Использование функции СМЕЩ
Нужна дополнительная помощь?
- Поиск по одному слову
- Фильтрация по слову в Excel
- Поиск по слову в ячейке: формула
- Поиск по слову в Excel с помощью !SEMTools
- Поиск по нескольким словам
- Найти любое слово из списка
- Найти все слова из списка
Чем отличается поиск по словам от простого поиска текста?
В первую очередь тем, что, если искать короткие слова обычным вхождением, мы можем найти слова, находящиеся внутри других слов. В результат фильтрации попадут ячейки, которые нам не нужны.
Поиск по словам предполагает показывать только ячейки, в которых слова совпадают целиком.
Поиск по одному слову
Рассмотрим сначала простой случай — когда найти нужно одно слово.
Фильтрация по слову в Excel
Процедура фильтрации в Excel содержит 3 метода текстовой фильтрации, иными словами, фильтровать можно по 3 критериям вхождения слова:
- ячейка содержит слово — тогда ставим пробелы перед и после слова;
- начинается с него — пробел после;
- заканчивается на него — пробел перед ним.
Проблема заключается в том, что в Excel нельзя фильтровать сразу по 3 критериям – можно только по двум. В этой ситуации есть простой лайфхак:
- Сделать копию исходного столбца;
- Удалить все символы, кроме текста и цифр (и пробелов между ними);
- Добавить символы в конце и начале каждой ячейки столбца, например, символ “”;
- Заменить оставшиеся пробелы на этот же символ;
- После этого фильтровать по полученному столбцу уже наше слово с “” перед и после него (пример – “слово”).
Символ как раз и поможет отфильтровать целые слова.
Как вы заметили, шагов целых пять, поэтому, если вам нужно найти только одно слово один раз, лучше просто 3 раза отфильтровать. Но если нужно будет искать несколько слов, это существенно ускорит процесс.
Смотрите пример ниже:
Можно сделать иначе — добавить в начале и конце строк пробелы, но тогда при поиске и фильтрации слова перед пробелом слева и после пробела справа нужно использовать символ “*” (звездочку). Иначе Excel не учтет пробелы.
Итак, чтобы сделать поиск или фильтрацию по слову в Excel, нужно добавить символ пробела справа и слева ко всем ячейкам столбца и после этого осуществлять поиск и фильтрацию по слову вместе с пробелами перед и после него.
Поиск по слову в ячейке: формула
Идеальной функцией для формулы поиска слова будет функция ПОИСК.
Формула:
=ПОИСК(" "&"вашеСлово"&" ";" "&A1&" ")>0
где вашеСлово — искомое слово, а A1 — ячейка, в которой мы его ищем.
Однако нужно помнить, что пунктуацию нужно предварительно удалить.
Поиск по слову в Excel с помощью !SEMTools
Пожалуй, самое быстрое решение, доступное владельцам полной версии моей надстройки для Excel. Алгоритм простой — выделяем диапазон, жмем макрос, вводим слово, жмем «ОК».
Поиск по нескольким словам
Как выяснить для каждой ячейки большого диапазона, присутствует ли в ней хотя бы одно из списка слов? Да так, чтобы слово не просто содержалось внутри строки, в том числе внутри других слов, а находить именно целые слова? А если нужно найти пару сотен слов в десятках тысяч ячеек?
Найти любое слово из списка
Настройка !SEMTools с лёгкостью решает такого рода проблемы. Более того, практически вне зависимости от количества слов, распознавание их наличия происходит очень быстро даже в диапазоне из 10 000 ячеек и более.
Чтобы найти список слов диапазоне ячеек с помощью !SEMTools, нужно:
- скопировать в соседний столбец диапазон, в котором мы хотим найти список слов. Это нужно для того, чтобы не стереть исходные данные,
- вызвать макрос на панели настройки,
- выбрать список слов, которые необходимо найти,
- нажать OK.
Макрос даёт проверить, есть ли хотя бы одно слово из списка в ячейке.
Конкретные примеры использования
Данная процедура обычно полезна перед двумя другими — извлечь слова из списка и удалить из текста список слов. Почему не производить их сразу? Дело в том, что первый более медленный, а второй не даст понимания, какие ячейки затронула операция удаления.
Есть множество случаев применения данного макроса.
Специалисты по контекстной рекламе могут искать маркеры покупки, аренды, отзывы, многие хранят собственные длинные списки минус-слов, наличие которых в запросе означает, что его необходимо не включать в рекламную кампанию.
Если вас интересует, присутствуют ли в прайс-листе товары определенных производителей, список которых у вас уже имеется, или каковы остатки товара на складе по этим позициям, вам также может пригодиться данный макрос.
Найти все слова из списка
Данная процедура производит тот же поиск по словам, но с кардинальным отличием. Ключевое условие — чтобы ВСЕ слова содержались в ячейке, только тогда она возвращает ИСТИНА.
Нужно сделать поиск в Excel по словам?
!SEMTools поможет решить задачу за пару кликов!
Поиск в диапазоне ячейки по части слова |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Поиск нужных данных в диапазоне
Как использовать функцию ВПР (VLOOKUP) для поиска и выборки нужных значений из списка мы недавно разбирали. Если вы еще с ней не знакомы — загляните сюда, не пожалейте пяти минут, чтобы сэкономить себе потом несколько часов.
Если же вы знакомы с ВПР, то — вдогон — стоит разобраться с похожими функциями: ИНДЕКС (INDEX) и ПОИСКПОЗ (MATCH), владение которыми весьма облегчит жизнь любому опытному пользователю Excel. Гляньте на следующий пример:
Необходимо определить регион поставки по артикулу товара, набранному в ячейку C16.
Задача решается при помощи двух функций:
=ИНДЕКС(A1:G13;ПОИСКПОЗ(C16;D1:D13;0);2)
Функция ПОИСКПОЗ ищет в столбце D1:D13 значение артикула из ячейки C16. Последний аргумент функции 0 — означает поиск точного (а не приблизительного) соответствия. Функция выдает порядковый номер найденного значения в диапазоне, т.е. фактически номер строки, где найден требуемыый артикул.
Функция ИНДЕКС выбирает из диапазона A1:G13 значение, находящееся на пересечении заданной строки (номер строки с артикулом выдает функция ПОИСКПОЗ) и столбца (нам нужен регион, т.е. второй столбец).
Ссылки по теме
- Использование функции ВПР (VLOOKUP) для поиска и подстановки значений.
- Улучшенная версия функции ВПР (VLOOKUP)
- Многоразовый ВПР
Хитрости »
4 Январь 2016 119747 просмотров
Найти в ячейке любое слово из списка
Предположим, вы получаете от поставщика/заказчика/клиента заполненную таблицу с перечнем продукции:
и эту таблицу необходимо сравнить с артикулами/кодами товара в имеющемся у вас каталоге продукции:
Как видно — в нашем каталоге только артикулы без наименований. У заказчика же помимо артикулов еще и название товара, т.е. много лишнего. И вам надо понять какие товары присутствуют в вашем каталоге, а какие нет:
Стандартных формул в Excel для подобного поиска и сравнения нет. Конечно, можно попробовать применить ВПР с подстановочными символами сначала к одной таблице, а затем к другой. Но если подобную операцию необходимо проделывать раз за разом, то прописывать по несколько формул к каждой таблице прямо скажем — не комильфо.
Поэтому я и решил сегодня продемонстрировать формулу, которая без всяких доп. манипуляций поможет такое сравнение сделать. Чтобы разобраться самостоятельно рекомендую скачать файл:
Скачать файл:
Tips_All_AnyoneOfArray.xls (49,5 KiB, 25 681 скачиваний)
На листе «Заказ» в этом файле таблица, полученная от заказчика, а на листе «Каталог» наши артикулы.
Сама формула на примере файла будет выглядеть так:
=ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11;A2);Каталог!$A$2:$A$11)
=LOOKUP(2,1/SEARCH(Каталог!$A$2:$A$11,A2),Каталог!$A$2:$A$11)
эта формула вернет название артикула, если в тексте есть хоть один артикул из каталога и
#Н/Д(#N/A)
если артикул не найден в каталоге.
Прежде чем облагородить эту формулу всякими дополнениями(вроде виде убирания ненужных
#Н/Д(#N/A)
) давайте разберемся как она работает.
Кратко о принципе работы функция
ПРОСМОТР(LOOKUP)
: она берет значение, заданное первым аргументом и ищет его в массиве(диапазоне) из второго аргумента. Как только находит — запоминает его позицию(строку, если угодно) и в итоге возвращает значение, расположенное в этой же позиции в массиве третьего аргумента.
Но у функции есть пара особенностей:
- Она ищет не обязательно именно точное совпадение с искомым, а максимально приближенное к нему. Если точнее — равное или большее искомому.
- Функция ПРОСМОТР(LOOKUP) старается преобразовать непосредственно в массив любое выражение, записанное вторым аргументом.
Этими особенностями мы и будем пользоваться.
Как уже упомянул выше — в качестве диапазона для поиска значения обычно приводится массив ячеек, но т.к. функция ПРОСМОТР(LOOKUP) старается преобразовать непосредственно в массив любое выражение — она вычисляет данное ей выражение 1/ПОИСК(Каталог!$A$2:$A$11;A2), работая в итоге с результатами этого вычисления.
Само же выражение работает следующим образом: ПОИСК(Каталог!$A$2:$A$11;A2) ищет поочередно каждое значение из списка Каталога в ячейке A2(в наименовании артикула из таблицы Заказчика). Если значение найдено, то возвращается номер позиции первого символа найденного значения(т.е. какое-то число). Если значение не найдено — возвращается значение ошибки #ЗНАЧ!(#VALUE!). Т.е. получается следующий массив: {55:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!}
По идее, после того, как функция ПРОСМОТР(LOOKUP) вычислит это выражение, она будет последовательно просматривать результаты функции ПОИСК(SEARCH) в поисках заданного нами искомого значения, пока не найдет значение максимально близкое к искомому(оптимально равное или чуть больше него). Но т.к. функция ПОИСК(SEARCH) может вернуть неизвестно какие по величине значения, мы, чтобы не гадать и не думать над тем, какое число задать для поиска, сначала единицу делим на выражение ПОИСК(Каталог!$A$2:$A$11;A2), чтобы получить массив вида:{0,0181818181818182:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!}
А в качестве искомого значения мы подсовываем функции ПРОСМОТР(LOOKUP) число 2 — т.е. заведомо большее число, чем может вообще встретиться в массиве(т.к. единица, поделенная на любое число будет меньше двух), чем заставляем её найти последнее подходящее совпадение из каталога(т.е. последнее не ошибочное значение). После этого функция ПРОСМОТР(LOOKUP) запомнит эту позицию и вернет значение из массива Каталог!$A$2:$A$11(третий аргумент), записанное в этом массиве для этой позиции.
Вы можете просмотреть этапы вычисления функции самостоятельно для каждой ячейки, я здесь просто приведу этапы чуть в расширенном для понимания виде:
- =ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11;A2);Каталог!$A$2:$A$11)
- =ПРОСМОТР(2;
1/{55:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!};
Каталог!$A$2:$A$11) - =ПРОСМОТР(2;{0,0181818181818182:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!};Каталог!$A$2:$A$11)
- =ПРОСМОТР(2;
1;
{«FM2-3320″:»CV455689″:»Q5949X»:»CE321A»:»CE322A»:»CE323A»:»00064073″:»CX292708″:»CX292709″:»CX292710″}) - =»FM2-3320″
Теперь немного облагородим функцию и сделаем еще пару реализаций
Реализация 1:
Вместо артикулов и #Н/Д(#N/A) выведем для найденных позиций «Есть», а для отсутствующих «Не найден в каталоге»:
=ЕСЛИ(ЕНД(ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11;A2)));»Не найден в каталоге»;»Есть»)
=IF(ISNA(LOOKUP(2,1/SEARCH(Каталог!$A$2:$A$11,A2))),»Не найден в каталоге»,»Есть»)
работа функции проста — с ПРОСМОТР(LOOKUP) разобрались, поэтому остались только ЕНД и ЕСЛИ.
ЕНД(ISNA) проверяет вложенное в неё выражение на предмет ошибки #Н/Д(#N/A). Если ошибка есть — ЕНД возвращает ИСТИНА(TRUE), а если ошибки нет — ЛОЖЬ(FALSE).
ЕСЛИ(IF) проверяет выражение из первого аргумента на выполнение. Если выражение выполняется(т.е. оно равно ИСТИНА(TRUE)), то функция запишет значение из второго аргумента(«Не найден в каталоге»). А если не выполняется(ЛОЖЬ(FALSE)) — то значение из третьего(«Есть»).
Т.е. все вместе получается: если наша основная функция возвращает значение ошибки #Н/Д(#N/A), то мы записываем в ячейку «Не найден в каталоге», в противном случае — «Есть».
Реализация 2:
Вместо #Н/Д выведем «Не найден в каталоге», но при этом если артикулы найдены — выведем названия этих артикулов:
=ЕСЛИОШИБКА(ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11;A2);Каталог!$A$2:$A$11);»Нет в каталоге»)
=IFERROR(LOOKUP(2,1/SEARCH(Каталог!$A$2:$A$11,A2),Каталог!$A$2:$A$11),»Нет в каталоге»)
Про функция ЕСЛИОШИБКА(IFERROR) я подробно рассказывал в этой статье: Как в ячейке с формулой вместо ошибки показать 0.
Если вкратце, то функция проверяет выражение, записанное первым аргументом(наша основная функция). Если в итоге получаем любую ошибку, то ЕСЛИОШИБКА запишет значение из второго аргумента(в нашем случае это текст «Не найден в каталоге»). Если же выражение(проверяемая функция) не возвращает ошибку, то функция ЕСЛИОШИБКА запишет именно то значение, которое было получено проверяемой функцией(в нашем случае это будет наименование артикула).
Реализация 3
Надо не просто определить какому артикулу соответствует, но и вывести цену для наименования по этому артикулу(сами цены должны быть расположены в столбце B листа Каталог):
=ЕСЛИОШИБКА(ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11;A2);Каталог!$B$2:$B$11);»»)
=IFERROR(LOOKUP(2,1/SEARCH(Каталог!$A$2:$A$11,A2),Каталог!$B$2:$B$11),»»)
Пара важных замечаний:
- данные на листе с артикулами не должны содержать пустых ячеек. Иначе с большой долей вероятности формула будет возвращать значение именно пустой ячейки, а не то, которое подходит под условия поиска
- формула осуществляет поиск таким образом, что ищется любое совпадение. Например, в качестве артикула записана цифра 1, а в строке наименований может встречаться помимо целой 1 еще и 123, 651123, FG1412NM и т.п. Для всех этих наименований может быть подобран артикул 1, т.к. он содержится в каждом наименовании. Как правило это может произойти, если артикул 1 расположен в конце списка
Поэтому желательно перед использованием формулы отсортировать список по возрастанию(от меньшего к большему, от А до Я).
В приложенном в начале статьи примере вы найдете все разобранные варианты.
Если же вам понадобится выводить все наименования, то можно воспользоваться функцией СОДЕРЖИТ_ОДНО_ИЗ из моей надстройки MulTEx.
Так же см.:
Сравнение текста по части предложения
Что такое формула массива
Как найти значение в другой таблице или сила ВПР
ВПР с поиском по нескольким листам
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика