Как в excel найти нужный текст в ячейке

Как в excel найти нужный текст в ячейке

В этой статье описаны синтаксис формулы и использование функций ПОИСК и ПОИСКБ в Microsoft Excel.

Описание

Функции ПОИСК И ПОИСКБ находят одну текстовую строку в другой и возвращают начальную позицию первой текстовой строки (считая от первого символа второй текстовой строки). Например, чтобы найти позицию буквы «n» в слове «printer», можно использовать следующую функцию:

Эта функция возвращает 4, так как «н» является четвертым символом в слове «принтер».

Можно также находить слова в других словах. Например, функция

возвращает 5, так как слово «base» начинается с пятого символа слова «database». Можно использовать функции ПОИСК и ПОИСКБ для определения положения символа или текстовой строки в другой текстовой строке, а затем вернуть текст с помощью функций ПСТР и ПСТРБ или заменить его с помощью функций ЗАМЕНИТЬ и ЗАМЕНИТЬБ. Эти функции показаны в примере 1 данной статьи.

Эти функции могут быть доступны не на всех языках.

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

К языкам, поддерживающим БДЦС, относятся японский, китайский (упрощенное письмо), китайский (традиционное письмо) и корейский.

Синтаксис

Аргументы функций ПОИСК и ПОИСКБ описаны ниже.

Искомый_текст Обязательный. Текст, который требуется найти.

Просматриваемый_текст Обязательный. Текст, в котором нужно найти значение аргумента искомый_текст.

Начальная_позиция Необязательный. Номер знака в аргументе просматриваемый_текст, с которого следует начать поиск.

Замечание

Функции ПОИСК и ПОИСКБ не учитывают регистр. Если требуется учитывать регистр, используйте функции НАЙТИ и НАЙТИБ.

В аргументе искомый_текст можно использовать подстановочные знаки: вопросительный знак (?) и звездочку (*). Вопросительный знак соответствует любому знаку, звездочка — любой последовательности знаков. Если требуется найти вопросительный знак или звездочку, введите перед ним тильду (

Если значение find_text не найдено, #VALUE! возвращается значение ошибки.

Если аргумент начальная_позиция опущен, то он полагается равным 1.

Если start_num больше нуля или больше, чем длина аргумента within_text, #VALUE! возвращается значение ошибки.

Аргумент начальная_позиция можно использовать, чтобы пропустить определенное количество знаков. Допустим, что функцию ПОИСК нужно использовать для работы с текстовой строкой «МДС0093.МужскаяОдежда». Чтобы найти первое вхождение «М» в описательной части текстовой строки, задайте для аргумента начальная_позиция значение 8, чтобы поиск не выполнялся в той части текста, которая является серийным номером (в данном случае — «МДС0093»). Функция ПОИСК начинает поиск с восьмого символа, находит знак, указанный в аргументе искомый_текст, в следующей позиции, и возвращает число 9. Функция ПОИСК всегда возвращает номер знака, считая от начала просматриваемого текста, включая символы, которые пропускаются, если значение аргумента начальная_позиция больше 1.

Примеры

Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.

Поиск в Excel по словам

Чем отличается поиск по словам от простого поиска текста?

В первую очередь тем, что, если искать короткие слова обычным вхождением, мы можем найти слова, находящиеся внутри других слов. В результат фильтрации попадут ячейки, которые нам не нужны.

Поиск по словам предполагает показывать только ячейки, в которых слова совпадают целиком.

Поиск по одному слову

Рассмотрим сначала простой случай — когда найти нужно одно слово.

Фильтрация по слову в Excel

Процедура фильтрации в Excel содержит 3 метода текстовой фильтрации, иными словами, фильтровать можно по 3 критериям вхождения слова:

  1. ячейка содержит слово — тогда ставим пробелы перед и после слова;
  2. начинается с него — пробел после;
  3. заканчивается на него — пробел перед ним.

Проблема заключается в том, что в Excel нельзя фильтровать сразу по 3 критериям — можно только по двум. В этой ситуации есть простой лайфхак:

  1. Сделать копию исходного столбца; (и пробелов между ними); , например, символ «\»;
  2. Заменить оставшиеся пробелы на этот же символ;
  3. После этого фильтровать по полученному столбцу уже наше слово с «\» перед и после него (пример — «\слово\»).

Символ \ как раз и поможет отфильтровать целые слова.

Как вы заметили, шагов целых пять, поэтому, если вам нужно найти только одно слово один раз, лучше просто 3 раза отфильтровать. Но если нужно будет искать несколько слов, это существенно ускорит процесс.

Смотрите пример ниже:

Фильтр столбца по слову, даже самому короткому

Можно сделать иначе — добавить в начале и конце строк пробелы, но тогда при поиске и фильтрации слова перед пробелом слева и после пробела справа нужно использовать символ «*» (звездочку). Иначе Excel не учтет пробелы.

Итак, чтобы сделать поиск или фильтрацию по слову в Excel, нужно добавить символ пробела справа и слева ко всем ячейкам столбца и после этого осуществлять поиск и фильтрацию по слову вместе с пробелами перед и после него.

Поиск по слову в ячейке: формула

Идеальной функцией для формулы поиска слова будет функция ПОИСК.

где вашеСлово — искомое слово, а A1 — ячейка, в которой мы его ищем.

Однако нужно помнить, что пунктуацию нужно предварительно удалить.

Найти слово с помощью формулы

Поиск по слову в Excel с помощью !SEMTools

Пожалуй, самое быстрое решение, доступное владельцам полной версии моей надстройки для Excel. Алгоритм простой — выделяем диапазон, жмем макрос, вводим слово, жмем «ОК».

Поиск по нескольким словам

Как выяснить для каждой ячейки большого диапазона, присутствует ли в ней хотя бы одно из списка слов? Да так, чтобы слово не просто содержалось внутри строки, в том числе внутри других слов, а находить именно целые слова? А если нужно найти пару сотен слов в десятках тысяч ячеек?

Найти любое слово из списка

Настройка !SEMTools с лёгкостью решает такого рода проблемы. Более того, практически вне зависимости от количества слов, распознавание их наличия происходит очень быстро даже в диапазоне из 10 000 ячеек и более.

Чтобы найти список слов диапазоне ячеек с помощью !SEMTools, нужно:

  1. скопировать в соседний столбец диапазон, в котором мы хотим найти список слов. Это нужно для того, чтобы не стереть исходные данные,
  2. вызвать макрос на панели настройки,
  3. выбрать список слов, которые необходимо найти,
  4. нажать OK.

Макрос даёт проверить, есть ли хотя бы одно слово из списка в ячейке.

Конкретные примеры использования

Данная процедура обычно полезна перед двумя другими — извлечь слова из списка и удалить из текста список слов. Почему не производить их сразу? Дело в том, что первый более медленный, а второй не даст понимания, какие ячейки затронула операция удаления.

Есть множество случаев применения данного макроса.
Специалисты по контекстной рекламе могут искать маркеры покупки, аренды, отзывы, многие хранят собственные длинные списки минус-слов, наличие которых в запросе означает, что его необходимо не включать в рекламную кампанию.

Если вас интересует, присутствуют ли в прайс-листе товары определенных производителей, список которых у вас уже имеется, или каковы остатки товара на складе по этим позициям, вам также может пригодиться данный макрос.

Найти все слова из списка

Данная процедура производит тот же поиск по словам, но с кардинальным отличием. Ключевое условие — чтобы ВСЕ слова содержались в ячейке, только тогда она возвращает ИСТИНА.

Нужно сделать поиск в Excel по словам?
!SEMTools поможет решить задачу за пару кликов!

Найти в ячейке любое слово из списка

Предположим, вы получаете от поставщика/заказчика/клиента заполненную таблицу с перечнем продукции:
Таблица заказа
и эту таблицу необходимо сравнить с артикулами/кодами товара в имеющемся у вас каталоге продукции:
Таблица артикулов
Как видно — в нашем каталоге только артикулы без наименований. У заказчика же помимо артикулов еще и название товара, т.е. много лишнего. И вам надо понять какие товары присутствуют в вашем каталоге, а какие нет:
Что получить
Стандартных формул в Excel для подобного поиска и сравнения нет. Конечно, можно попробовать применить ВПР с подстановочными символами сначала к одной таблице, а затем к другой. Но если подобную операцию необходимо проделывать раз за разом, то прописывать по несколько формул к каждой таблице прямо скажем — не комильфо.
Поэтому я и решил сегодня продемонстрировать формулу, которая без всяких доп. манипуляций поможет такое сравнение сделать. Чтобы разобраться самостоятельно рекомендую скачать файл:
Скачать файл:

Tips_All_AnyoneOfArray.xls (49,5 KiB, 24 426 скачиваний)

На листе «Заказ» в этом файле таблица, полученная от заказчика, а на листе «Каталог» наши артикулы.
Сама формула на примере файла будет выглядеть так:

=ПРОСМОТР(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) : она берет значение, заданное первым аргументом и ищет его в массиве(диапазоне) из второго аргумента. Как только находит — запоминает его позицию(строку, если угодно) и в итоге возвращает значение, расположенное в этой же позиции в массиве третьего аргумента.
Но у функции есть пара особенностей:

  1. Она ищет не обязательно именно точное совпадение с искомым, а максимально приближенное к нему. Если точнее — равное или большее искомому.
  2. Функция ПРОСМОТР (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 (третий аргумент), записанное в этом массиве для этой позиции.
Вы можете просмотреть этапы вычисления функции самостоятельно для каждой ячейки, я здесь просто приведу этапы чуть в расширенном для понимания виде:

  1. =ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11; A2 );Каталог!$A$2:$A$11)
  2. =ПРОСМОТР(2;
    1/<55:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!>;
    Каталог!$A$2:$A$11)
  3. =ПРОСМОТР(2;<0,0181818181818182:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!>;Каталог!$A$2:$A$11)
  4. =ПРОСМОТР(2;
    1;
    <"FM2-3320":"CV455689":"Q5949X":"CE321A":"CE322A":"CE323A":"00064073":"CX292708":"CX292709":"CX292710">)
  5. =»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.

Excel поиск текста в ячейке

При работе в табличном редакторе часто возникают такие моменты, когда необходимо отыскать определенную текстовую информацию в ячейке. В статье мы разберем несколько способов реализации этой процедуры.

Поиск текста в ячейке табличного редактора

Существует несколько вариантов выполнения данного поиска, разберем каждый из них ниже.

Поиск ячеек, в которых есть текстовая информация

Подробная инструкция выглядит так:

  1. Производим выделение необходимого диапазона ячеек, в котором будет осуществляться поиск. Для осуществления поиска по всему рабочему листу нужно кликнуть по абсолютно любой ячейке.
  2. Передвигаемся в подраздел, имеющий наименование «Главная». В блоке команд под названием «Редактирование» находим «Найти и выделить» и щелкаем левой клавишей мышки по элементу «Найти».
  1. В строчку «Найти» вводим ту текстовую информацию, которую нам необходимо отыскать. Стоит отметить, что при поиске можно применять подстановочные символы.
  2. Для указания формата поиска, необходимо кликнуть левой клавишей мышки по кнопке «Формат», а затем реализовать необходимые изменения в появившемся окошке, имеющем название «Найти формат».
  3. Щелкаем «Найти далее» или же «Найти все».
  4. Готово! Мы осуществили поиск необходимой информации.

Важно! При помощи кнопки «ESC» располагающейся на клавиатуре, осуществляется закрытие поиска.

В табличном редакторе имеется метод, позволяющий реализовать нестрогий поиск. Он применяется в тех моментах, когда нужное слово помнится частично. Здесь предусматривается применение заменителей знаков. В программе существует 2 таких знака:

  1. «*» — абсолютно любое число знаков.
  2. «?» — любой один знак.

Внимание! Стоит заметить, что если в ячейках необходимо отыскать именно вопросительный знак или же символ умножения, то перед ним необходимо написать тильду «

». Если же нужно найти тильду, то следует ввести «

excel-poisk-teksta-v-yachejke

2

Подробная инструкция по осуществлению неточного поиска выглядит так:

  1. Запускаем табличный редактор.
  2. Открываем рабочий лист при помощи нажатия левой клавиши мышки.
  3. Зажимаем сочетание кнопок «Ctrl + F» на клавиатуре.
  4. На экране отобразилось окошко, позволяющее реализовать поиск текстовой информации в табличном редакторе. Здесь вводим в строчку «Найти» необходимое слово для поиска и используем знаки («?», «*») в тех моментах, где мы сомневаемся в точности информации.
  5. Убираем галочку около надписи «Ячейка целиком».
  6. Щелкаем левой клавишей мышки на «Найти все».
  7. Готово! На экране выделились все текстовые данные, подходящие под заданные настройки поиска.

Поиск нескольких слов в документе

Для того чтобы отыскать в табличном документе несколько слов, необходимо воспользоваться нижеприведенной инструкцией:

  1. Запускаем табличный редактор.
  2. Открываем рабочий лист при помощи нажатия левой клавиши мышки.
  3. Передвигаемся в подраздел, имеющий наименование «Редактирование». Здесь находим элемент «Найти и выделить» и жмем по нему левой клавишей мышки.
  4. Если нам необходимо отыскать какую-либо точную фразу, то в вводим ее в пустое поле, а затем жмем левой клавишей мышки на элемент «Найти все». На экране отобразятся результаты, в которых будет выведена точная фраза без использования других склонений.
  5. Если необходимая фраза разделена, какими-либо, другими словами, то нужно дополнительно поставить между каждым введенным слово знак звездочки «*». На экране отобразятся даже те результаты, в которых находятся другие знаки между искомыми словами.

Проверка содержимого, на наличие текстовой информации

Чтобы осуществить эту несложную процедуру, необходимо применить специальный оператор ЕТЕКСТ. Пример использования оператора приведен на этой картинке:

excel-poisk-teksta-v-yachejke

5

Проверка соответствия наполнения поля конкретной текстовой информации

Чтобы осуществить эту несложную процедуру, необходимо применить специальный оператор ЕСЛИ. Пример использования оператора приведен на этой картинке:

excel-poisk-teksta-v-yachejke

6

Проверка соответствия наполнения фрагмента поля конкретной текстовой информации

Чтобы произвести эту процедуру, необходимо применить специальные операторы ЕЧИСЛО, ЕСЛИ и ПОИСК. Стоит заметить, что оператор ПОИСК не учитывает регистр. Пример использования оператора приведен на этой картинке:

excel-poisk-teksta-v-yachejke

7

Поиск текстовой информации при помощи фильтра

Фильтрация информации тоже позволяет отыскать текст в ячейках. Для того чтобы отыскать в табличном документе слово при помощи фильтра, необходимо воспользоваться нижеприведенной инструкцией:

  1. Запускаем табличный редактор.
  2. Открываем рабочий лист при помощи нажатия левой клавиши мышки.
  3. Производим выделение заполненных ячеек.
  4. Передвигаемся в раздел, имеющий наименование «Главная». Здесь находим элемент под названием «Сортировка» и жмем по нему левой клавишей мышки.
  5. Щелкаем левой клавишей мышки на «Фильтр».
  6. На экране возникло небольшое специальное контекстное меню.
  7. Здесь вводим то значение, которое нам необходимо отыскать в документе табличного редактора.
  8. После проведения всех действий жмем на кнопку «ОК» левой клавишей мышки.
  9. Готово! В результате наших манипуляций в колонке выделились те ячейки, в которых располагается текстовая информация, найденная программой. Если в раскрывающемся списке мы нажмем на «Выделить все», то будет реализован сброс результатов поиска. Повторное нажатие левой клавишей мышки на кнопку «Сортировка» отключит используемый фильтр.

Заключение

Из статьи мы узнали, что существует огромное количество способов, позволяющих отыскать необходимую информацию в ячейках документа табличного редактора. Реализовать эту несложную процедуру можно при помощи специальных функций, а также формул и операторов. Каждый пользователь сможет подобрать для себя наиболее удобный способ, чтобы реализовать поиск необходимой информации в табличном документе.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *