Поиск ключевых слов по тексту excel

Поиск ключевых слов в тексте

Поиск ключевых слов в исходном тексте — одна из очень распространенных задач при работе с данными. Давайте рассмотрим её решение несколькими способами на следующем примере:

Постановка задачи

Предположим, что у нас с вами есть список ключевых слов — названия автомобильных марок — и большая таблица всевозможных запчастей, где в описаниях иногда могут встречаться один или сразу несколько таких брендов, если запчасть подходит больше, чем к одной марке автомобиля. Наша задача состоит в том, чтобы найти и вывести все обнаруженные ключевые слова в соседние ячейки через заданный символ-разделитель (например, запятую).

Способ 1. Power Query

Само-собой, сначала превращаем наши таблицы в динамические («умные») с помощью сочетания клавиш Ctrl+T или команды Главная — Форматировать как таблицу (Home — Format as Table), даём им имена (например Марки и Запчасти) и загружаем по очереди в редактор Power Query, выбрав на вкладке Данные — Из таблицы/диапазона (Data — From Table/Range). Если у вас старые версии Excel 2010-2013, где Power Query установлена как отдельная надстройка, то нужная кнопка будет на вкладке Power Query. Если у вас совсем новая версия Excel 365, то кнопка Из таблицы/диапазона называется там теперь С листа (From Sheet).

После загрузки каждой таблицы в Power Query возвращаемся обратно в Excel командой Главная — Закрыть и загрузить — Закрыть и загрузить в… — Только создать подключение (Home — Close & Load — Close & Load to… — Only create connection).

Теперь создадим дубликат запроса Запчасти, щёлкнув по нему правой кнопкой мыши и выбрав команду Дублировать запрос (Duplicate query), затем переименуем получившийся запрос-копию в Результаты и дальше будем работать уже с ним.

Логика действий следующая:

  1. На вкладке Добавление столбца выбираем команду Настраиваемый столбец (Add column — Custom column) и вводим формулу =Марки. После нажатия на ОК получим новый столбец, где в каждой ячейке будет вложенная таблица со списком наших ключевых слов — марок автопроизводителей:

    Добавляем столбец с марками

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

    Развернутые таблицы

  3. На вкладке Добавление столбца выбираем команду Условный столбец (Conditional column) и задаём условие на проверку вхождения ключевого слова (марки) в исходный текст (описание запчасти):

    Проверяем вхождение марки в описание

  4. Чтобы поиск был регистроНЕчувствительный, добавляем вручную в строке формул третий аргумент Comparer.OrdinalIgnoreCase к функции проверки вхождения Text.Contains (если строки формул не видно, то её можно включить на вкладке Просмотр):

    Избавляемся от регистрочувствительности в поиске

  5. Фильтруем получившуюся таблицу, оставляя только единички в последнем столбце, т.е. совпадения и удаляем ненужный больше столбец Вхождения.
  6. Группируем одинаковые описания командой Группировать по на вкладке Преобразование (Transform — Group by). В качестве агрегирующей операции выбираем Все строки (All rows). На выходе получаем столбец с таблицами, куда собраны все подробности по каждой запчасти, включая необходимые нам марки автопроизводителей:

    Сгруппированные описания

  7. Чтобы извлечь марки для каждой запчасти, добавляем еще один вычисляемый столбец на вкладке Добавление столбца — Настраиваемый столбец (Add column — Custom column) и используем формулу, состоящую из таблицы (они у нас располагаются в столбце Подробности) и имени извлекаемого столбца:

    Вытаскиваем столбец с марками

  8. Щёлкаем по кнопке с двойными стрелками в шапке получившегося столбца и выбираем команду Извлечь значения (Extract values), чтобы вывести марки через любой желаемый символ-разделитель:

    Выводим все марки через запятую

  9. Удаляем ненужный больше столбец Подробности.
  10. Чтобы добавить к получившейся таблице исчезнувшие из неё запчасти, где в описаниях не было найдено ни одной марки — выполним процедуру объединения запроса Результат с исходным запросом Запчасти кнопкой Объединить на вкладке Главная (Home — Merge queries). Тип соединения — Внешнее соединение справа (Right outer join):

    Объединяем запросы Результаты и Запчасти

  11. Останется удалить лишние столбцы и переименовать-переместить оставшиеся — и наша задача решена:

    Результаты

Способ 2. Формулы

Если у вас версия Excel 2016 или новее, то нашу проблему можно весьма компактно и изящно решить с помощью новой функции ОБЪЕДИНИТЬ (TEXTJOIN):

Поиск и извлечение ключевых слов формулой

Логика работы этой формулы проста:

  • Функция ПОИСК (FIND) ищет вхождение по очереди каждой марки в текущее описание запчасти и выдаёт либо порядковый номер символа, начиная с которого марка была найдена, либо ошибку #ЗНАЧ! если марки в описании нет.
  • Затем при помощи функции ЕСЛИ (IF) и ЕОШИБКА (ISERROR) мы заменяем ошибки на пустую текстовую строку «», а порядковые номера символов — на сами названия марок.
  • Полученный массив из пустых ячеек и найденных марок собирается в единую строку через заданный символ-разделитель с помощью функции ОБЪЕДИНИТЬ (TEXTJOIN).

Сравнение быстродействия и буферизация запроса Power Query для ускорения

Для тестирования быстродействия возьмем в качестве исходных данных таблицу из 100 000 описаний запчастей. На ней получаем следующие результаты:

  • Время пересчета формулами (Способ 2) — 9 сек. при первом копировании формулы на весь столбец и 2 сек. при повторном (сказывается буферизация, видимо).
  • Время обновления запроса Power Query (Способ 1) гораздо хуже — 110 сек.

Само-собой, многое зависит от «железа» отдельно взятого ПК и установленной версии Office и обновлений, но общая картина, думаю, понятна.

Для ускорения запроса Power Query давайте буферизуем таблицу-справочник Марки, т.к. она у нас не меняется в процессе выполнения запроса и постоянно пересчитывать её (как это де-факто делает Power Query) не нужно. Для этого используем функцию Table.Buffer из встроенного в Power Query языка М.

Для этого откроем запрос Результаты и на вкладке Просмотр нажмём на кнопку Расширенный редактор (View — Advanced Editor). В открывшемся окне добавим строку с новой переменной Марки2, которая будет буферизованной версией нашего справочника автопроизводителей и используем эту новую переменную далее в следующей команде запроса:

Буферизуем справочник в запросе Power Query

После такой доработки скорость обновления нашего запроса возрастает почти в 7 раз — до 15 сек. Совсем другое дело :)

Ссылки по теме

  • Нечёткий текстовый поиск в Power Query
  • Массовая замена текста формулами
  • Массовая замена текста в Power Query функцией List.Accumulate

Поиск документа Excel по содержимому текста.

​Смотрите также​​ek09​ ​: Уважаемые профи Excel​​ искат ьво всей​​Нажмите кнопку​​нажмите кнопку​ нас важно, чтобы​ т.е. в слове​
​ возвращается значение ошибки​
​Источник: http://www.excel-easy.com/examples/search-box.html​ ​ROW​
​(ПОИСК), у нас​ регистр. В слове​ Если ввести поисковый​Как найти файл​В появившемся диалоговом​ что документ находится​Рассмотрим,​: прошу прощения но​ !!!​
​ книеге одновременно, а​Найти все​Найти и выделить​ эта статья была​ «докладная» содержится слово​ #ЗНАЧ!​Перевел: Антон Андронов​(СТРОКА), все значения​ всегда будут получаться​ «Tunisia» строка «uni»​
​ запрос в ячейку​​ определенного типа, смотрите​ окне нажимаем на​
​ в папке «Документы»)​
​как найти документ​ я к сожалению​Помогите решить задачу.​ не на каждм​
​или​и нажмите кнопку​ вам полезна. Просим​ из 5 букв,​Функция ПОИСК() не учитывает​Автор: Антон Андронов​ в столбце​ уникальные значения, а​ имеет начальное положение​B2​ в статье «Поиск​ функцию «Открыть». Появится​ – «Excel» (в​Excel по содержимому текста​
​ ни чего не​ Имеется список контрагентов​ листе отдельно? Ато​Найти далее​Найти​ вас уделить пару​
​ первые 4 из​
​ РЕгиСТР букв. Для​ ​Функция ПОИСК(), английский вариант​D​​ небольшой прирост не​
​ 2, а в​, Excel найдет совпадения​ документа Word по​ список последних книг​ папке «Документы» есть​,​ понял. Если вводить​ и часто приходится​
​ 46 раз просить​ ​.​
​.​ секунд и сообщить,​ ​ которых клад (начиная​
​ поиска с учетом​ SEARCH(), находит первое​стали уникальными. Как​ повлияет на ранжирование.​ слове «United States»​ в столбце​ тексту» тут. Принцип​ Excel, с которыми​
​ две папки «Word»​таблицы​ ключевые слова в​ искать нужного контрагента​ его найти одно​Найти все​В поле​ помогла ли она​ с третьей буквы​ регистра следует воспользоваться​ вхождение одной текстовой​ следствие, числа в​​ Теперь значение для​ начальное положение равно​E​ один.​ мы работали. Ищем​ и «Excel». Мы​, например, когда не​ ячейку отмеченную жёлтым​ из большого списка.​ и тоже както​ ​списки каждого экземпляра​
​Найти​ вам, с помощью​ слова докладная).​ функцией НАЙТИ().​ строки в другой​ столбце​ «United States» составляет​ 1. Чем меньше​и выдаст результат​В Excel можно​ среди них. Если​ помним, что документ,​ помним название файла,​ ни чего не​ Хочу как то​ тяжко.​ элемента, который необходимо​введите текст —​ кнопок внизу страницы.​
​Функция НАЙТИ() учитывает РЕгиСТР​Формула =ПОИСК(«к»;»Первый канал») вернет​ строке и возвращает​C​ 1,00006, а для​ значение, тем выше​
​ в столбце​ искать данные функциями,​ документ давно не​ который мы ищем,​ документа, папки, т.д.​ происходит. На сколько​ автоматизировать (ускорить) данный​Валерий беляев​ найти, и позволяет​ или номера —,​ Для удобства также​ букв и не​ 8, т.к. буква​ начальную позицию найденной​тоже уникальны.​
​ «United Kingdom» –​ оно должно располагаться.​B​ можно искать, выбирать,​ открывали и его​ находится в конкретной​Первый вариант.​ я понял вы​ процесс.​: Pasha Ram -​ сделать активной ячейки,​ вам нужно найти.​ приводим ссылку на​ допускает использование подстановочных​ к находится на​ строки.​Мы почти закончили. Функцию​

excel-office.ru

Строка поиска в Excel

​ 1,00009. Кроме этого​И «United States», и​.​

​ переносить данные в​ нет в списке,​ папке «Excel»).​​Поиск документа​​ просто сделали обычный​Нужно сделать поиск​​ ты сам то​​ выбрав нужное вхождение.​ Или выберите из​​ оригинал (на английском​​ знаков. Для поиска​

Строка поиска в Excel

​ 8-й позиции слева.​ПОИСКискомый_текстпросматриваемая_строка​VLOOKUP​

  1. ​ мы добавили функцию​​ «United Kingdom» возвращают​​Чтобы создать эту строку​​ другое место, в​​ то нажимаем на​Если документ находится​Excel по названию папки.​​ фильтр по всем​​ ключевых слов по​

    ​ пробовал?​
    ​ Можно сортировать результаты​

  2. ​ раскрывающегося списка​ языке) .​ без учета регистра,​Пусть в ячейке​​;[нач_позиция])​​(ВПР) мы будем​IFERROR​ значение 1. Как​​ поиска, следуйте инструкции​​ другую таблицу, бланк,​Строка поиска в Excel​ кнопку «Компьютер».​​ на флэшке, то​​Нажимаем кнопку «Пуск»,​​ ячейкам​ тексту Excel. Желательно​Ответ:​​Найти​​Найти​Предположим, что вы хотите​ а также для​А2​Искомый_текст​ использовать, чтобы извлечь​(ЕСЛИОШИБКА). Если ячейка​ быть? Чуть позже​ ниже:​ т.д. формулами. Какими​
  3. ​Затем, нажимаем на кнопку​ указываем (выделяем) флэшку.​ расположенную в левом​Poltava​ без макросов, но​Нажимаешь Ctrl+F​все, щелкнув заголовок.​​последнего поиска.​​ убедиться, что столбец​ поиска с использованием​введена строка Первый​  — текст, который требуется​​ найденные страны (наименьшее​​ содержит ошибку, к​

    ​ мы присвоим всем​
    ​Выделите ячейку​

  4. ​ способами можно искать​ «Обзор». В появившемся​ Сначала, естественно, вставим​​ нижнем углу монитора.​​: При такой структуре​ можно и с​В открывшемся окне​Строка поиска в Excel​Примечание:​​Примечание:​​ содержит текст, не​​ подстановочных знаков пользуйтесь​ канал — лучший.​ найти.​ значение первым, второе​ примеру, когда строка​ данным уникальные значения​D4​​ данные в Excel,​​ диалоговом окне в​ флэшку в ноутбук.​ В появившемся списке​ только с доп​ ними.​ нажимаешь «Параметры»​ Чтобы прекратить процесс поиска,​ В условиях поиска можно​ номера. Или perhapsyou​ функцией ПОИСК().​ Формула =ПОИСК(СИМВОЛ(32);A2) вернет​​Просматриваемая_строка​​ наименьшее вторым, и​ не может быть​ с помощью функции​и вставьте функцию​ смотрите в статье​ строке поиска пишем​
  5. ​ : )​​ нажимаем на кнопку​​ столбцом! И на​​В идеале хотелось​​В открывшихся окошечках​ нажмите клавишу ESC.​

    ​ использовать подстановочные знаки.​
    ​ необходимо найти все​

  6. ​Функция ПОИСК() может быть​ 7, т.к. символ​​  — текст, в которой​​ т.д.) Выделите ячейку​ найдена, возвращается пустая​RANK​Строка поиска в Excel​SEARCH​​ «Поиск в Excel»​​ поисковую фразу или​​Второй вариант.​ «Этот компьютер» (в​ будущее не увлекайтесь​ бы ввести ключевое​ выбираешь «В книге»​Для выполнения этой задачи​Чтобы задать формат для​ заказы, которые соответствуют​​ использована совместно с​​ пробела (код 32)​ ищется​​B4​​ строка («»).​(РАНГ), но для​(ПОИСК), как показано​​ и в перечне​​ слово. Мы написали​
  7. ​Поиск книги​​ Word 2013) или​​ объединением ячеек очень​ слово в ячейку​Вводишь что искать​ используется функция​ поиска, нажмите кнопку​ определенным Продавец. Если​​ функциями ЛЕВСИМВ(), ПРАВСИМВ()​​ находится на 7-й​​Искомый_текст​​и вставьте функцию​Выберите ячейку​

    ​ этого нам нужно​
    ​ ниже, указав абсолютную​

  8. ​ статей по этой​ «визитка». Появится список​​Excel по тексту в​​ «Мой компьютер» (в​ непредсказуемая вещь.​ (выделенную жёлтым цветом)​Строка поиска в Excel
  9. ​Нажимаешь «Найти все»​ЕТЕКСТ​​Формат​​ у вас нет​ и ПСТР().​​ позиции.​​.​​VLOOKUP​​C4​

​ слегка скорректировать результат​ ссылку на ячейку​

Строка поиска в Excel

​ теме, расположенном в​ файлов Excel, имеющим​
​ ней​
​ Word 2007).​

​ek09​

office-guru.ru

Функция ПОИСК() в MS EXCEL

​ после чего ниже​ЗЫ: Это в​.​и внесите нужные​ проблемой верхний или​Например, в ячейке​Формула =ПОИСК(«#???#»;»Артикул #123# ID»)​

Синтаксис функции

​Нач_позиция​​(ВПР), как показано​

​и вставьте функцию​​ формулы в ячейке​В2​

​ конце статьи.​​ в тексте слово​.​​Откроется окно, в​​: Poltava, вы просто​

​ отображались бы организации​​ 2007, другого нет​Для возвращения результатов для​ изменения во всплывающем​ нижний регистр текста,​​А2​​ будет искать в​  — позиция знака в​

​ ниже.​​RANK​​D4​.​Поработали — пора​ «визитка».​Нам нужно найти​ правом верхнем углу​ маг и волшебник.​ имеющие совпадение по​ — проверить не​ условия, которое можно​ окне​ существует несколько способов​

​содержится фамилия и​ строке «Артикул #123#​ просматриваемой_строке, с которой​

​=IFERROR(VLOOKUP(A4,$C$4:$E$197,3,FALSE),»»)​(РАНГ), как показано​, как показано ниже:​=SEARCH($B$2,E4)​ отдохнуть. )) А​

Примеры

​Внимание!​ книгу Excel, в​ которого, есть строка​ Если не секрет​

​ данным ключевым словам.​​ могу​​ указать с помощью​Найти формат​ проверки, если ячейка​ имя «Иванов Иван»,​ ID» последовательность из​ должен начинаться поиск.​=ЕСЛИОШИБКА(ВПР(A4;$C$4:$E$197;3;ЛОЖЬ);»»)​

​ ниже:​IFERROR(SEARCH($B$2,E4)+ROW()/100000,»»)​=ПОИСК($B$2;E4)​ если серьёзно, то,​Внизу этого окна​ которой есть слово​ поиска. В этой​

​ расскажите как вы​ Ну и соответственно​Majya penzeva​ функции​.​ содержит текст.​ то формула =ЛЕВСИМВ(A2;ПОИСК(СИМВОЛ(32);A2)-1)​ 5 символов, которая​ Если аргумент​Дважды щелкните по правому​=IFERROR(RANK(D4,$D$4:$D$197,1),»»)​ЕСЛИОШИБКА(ПОИСК($B$2;E4)+СТРОКА()/100000;»»)​Дважды кликните по маркеру​ в Excel есть​ мы выбрали место​

​ «январь». Пишем это​ строке пишем поисковую​ это сделали ?​ если отчистить ячейку​: Нажмите Ctrl+F в​Если​Кнопка​Для поиска текста можно​

Функция НАЙТИ() vs ПОИСК()

​ извлечет фамилию, а​ начинается и заканчивается​нач_позиция​ нижнему углу ячейки​=ЕСЛИОШИБКА(РАНГ(D4;$D$4:$D$197;1);»»)​Снова дважды кликните по​ автозаполнения, который находится​ много возможностей, кроме​ поиска «Все файлы​

Связь с функциями ЛЕВСИМВ(), ПРАВСИМВ() и ПСТР()

​ слово в строке​ фразу, слова. Мы​ То что вы​ (выделенную жёлтым цветом)​

​ всплывшем окне внесите​​.​​Параметры​ также использовать фильтр.​ =ПРАВСИМВ(A2;ДЛСТР(A2)-ПОИСК(СИМВОЛ(32);A2)) — имя.​ на знак #.​опущен, то предполагается​B4​Дважды щелкните по правому​ правому нижнему углу​ в правом нижнем​ стандартных функций Excel,​ Excel». Здесь мы​

excel2.ru

Проверка ячейки на наличие в ней текста (без учета регистра)

​ поиска (смотрите первый​​ написали «посчитать стаж».​ сделали доп. столбец​ то должен отображаться​ нужное слово и​Для выполнения этой задачи​служит для задания​ Дополнительные сведения см.​ Если между именем​Чтобы найти позицию второго​ значение 1.​, чтобы быстро скопировать​ углу ячейки​ ячейки​ углу ячейки​ которые можно применить​ можем выбрать другой​ вариант, который мы​ Во время ввода​ и поставили фильтр​ весь список контрагентов​ выбирите найти все.​

​ используются функции​ более подробных условий​ в статье Фильтрация​ и фамилией содержится​ вхождения буквы «а»​В аргументе​ формулу в другие​С4​D4​D4​ в своей работе.​ вид файла. Например,​ рассмотрели выше).​

​ поисковой фразы сразу​ я понял, а​Сам к сожалению​Egregreh​Если​

Поиск ячеек, содержащих текст

​ поиска. Например, можно найти​ данных.​ более одного пробела,​

  1. ​ в строке «мама​искомый_текст​ ячейки.​

    ​, чтобы быстро скопировать​, чтобы быстро скопировать​, чтобы быстро скопировать​

  2. ​ Например, как можно​​ нам нужно найти​​Получится такой результат.​​ идет поиск.​​ как это работает​​ не смог решить​​: http://www.lessons-tva.info/edu/inf-excel/lesson_4_4.html​​,​​ все ячейки, содержащие​
    Найдите параметр на ленте

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

    ​ текст в Excel’евском​​Третий вариант.​Получился такой результат.​

  4. ​ я не понял​ данную задачу, поэтому​​Alexander lagoyskiy​​Поиск​ данных определенного типа,​ найти ячейки, содержащие​​ вышеупомянутых формул используйте​​ формулу =ПОИСК(«а»;»мама мыла​

  5. ​ знаки — вопросительный​​ столбце​​ ячейки.​ ячейки столбца.​ оставшиеся ячейки столбца​ построения графика в​ файле со словами​Как найти нужный документ​

    ​Нажимаем на нужный документ,​ )))).​ и обращаюсь к​: Нажать ctrl +​​и​​ такого как формулы.​​ определенный текст.​​ функцию СЖПРОБЕЛЫ().​​ раму»;ПОИСК(«а»;»мама мыла раму»)+1).​​ знак (?) и​

  6. ​А​​Объяснение:​​Объяснение:​​D​​ ячейке, т.д. Такой​

    ​ визитка. Тогда мы​​ из открытого документа​ он откроется.​И огромное вам​ асам Excel​ F и в​ЕЧИСЛО​​Для поиска на текущем​​Выделите диапазон ячеек, среди​

​Примечание:​​ Чтобы определить есть​ звездочку (*). Вопросительный​

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

​на белый и​Функция​​Функция​​.​

Примеры ЕТЕКСТ

Проверка соответствия содержимого ячейки определенному тексту

​ способ мы рассмотрели​ выберем функцию «Все​Excel.​Внимание!​​ спасибо !!!!​​Формуляр​

Примеры ЕСЛИ

Проверка соответствия части ячейки определенному тексту

​ открывшемся окне ввести​.​​ листе или во​​ которых требуется осуществить​​Мы стараемся как​​ ли третье вхождение​​ знак соответствует любому​​ скройте столбцы​

​RANK​​ROW​​Объяснение:​​ на примере создания​

Примеры ЕСЛИ, ЕЧИСЛО и ПОИСК

support.office.com

Как искать слово в книге excel?

​ файлы». Появится список​В открытом документе​Чем точнее укажем​Poltava​: Проще всего воспользоваться​ объект поиска.​Примечание:​ всей книге можно​ поиск.​ можно оперативнее обеспечивать​ буквы «м» в​ знаку; звездочка —​

​С​​(РАНГ) возвращает порядковый​(СТРОКА) возвращает номер​Функция​
​ простой игры. Смотрите​
​ всех разных файлов​
​ Excel переходим на​ место хранения документа,​
​: VBA простейший макрос.​ штатным фильтром типа​
​Ermak dogma​
​ Функция​
​ выбрать в поле​Чтобы выполнить поиск по​ вас актуальными справочными​ строке «мама мыла​

​ любой последовательности знаков.​​и​ номер значения. Если​ строки ячейки. Если​SEARCH​

Excel. как в Excel сделать поиск, я знаю что можно подскажите как

​ статью «Игра в​​ со словом «визитка»​

​ закладку «Файл» (в​​ тем быстрее произойдет​ Повесил на событие​Contains: «ключевое слово»​: Дпнные/Список/Создать список…​

​поиска​​Искать​

​ всему листу, щелкните​​ материалами на вашем​ раму» используйте формулу​ Если нужно найти​

поиск ключевых слов по тексту Excel (Иное)

​D​​ третий аргумент функции​ мы разделим номер​
​(ПОИСК) ищет начальную​ Excel».​ — и текст​ Excel 2013) или​ поиск документа.​ листа «Изменение ячейки»​Если очень хочется​Sergei shkloff​
​не учитывается регистр.​вариант​ любую ячейку.​ языке. Эта страница​ =ЕСЛИ(ДЛСТР(ПОДСТАВИТЬ(«мама мыла раму»;»м»;»»;3))=ДЛСТР(«мама​ в тексте вопросительный​
​.​ равен 1, Excel​ строки на крупное​ позицию искомого значения​Этот пример научит вас​ в Word, и​ нажимаем на кнопку​Например, мы указали​ обработчик который при​ вводить слово в​: ctrl+f → Искать:​В документе 46 листов,​Лист​
​На вкладке​ переведена автоматически, поэтому​ мыла раму»);»Нет третьего​ знак или звездочку,​Результат: Ваша собственная строка​

​ выстраивает числа по​​ число и прибавим​ в строке. Функция​​ создавать собственную строку​
​ файл Excel, и​ «Office» в левом​ такой путь –​ изменении данных в​ ячейку, то то​

​ (На листе) Меняешь​​ и по 5​или​Главная​ ее текст может​ вхождения м»;»Есть третье​ следует поставить перед​ поиска в Excel.​ возрастанию: от наименьшего​ это значение к​SEARCH​ поиска в Excel.​ картинки с названием​

​ верхнем углу (в​​ «Этот компьютер» -​ ячейке с условием,​ же самое через​ (в книге)​ страниц на каждом,​Книга​

​в группе​​ содержать неточности и​ вхождение м»)​ ними тильду (~).​Урок подготовлен для Вас​ к большему. Поскольку​ результату функции​(ПОИСК) не учитывает​Вот так выглядит таблица.​ «визитка», т.д.​ Excel 2007).​ «Документы» (мы помним,​ устанавливает соответствующий фильтр.​
​ макросы (записав макрорекордером).​ek09​

​ есть ли возможность​​.​Редактирование​ грамматические ошибки. Для​Формула =ПОИСК(«клад?»;»докладная») вернет 3,​Если искомый_текст не найден,​ командой сайта office-guru.ru​ мы добавили функцию​

excelworld.ru

​SEARCH​

Хитрости »

4 Январь 2016              119735 просмотров


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

Предположим, вы получаете от поставщика/заказчика/клиента заполненную таблицу с перечнем продукции:
Таблица заказа
и эту таблицу необходимо сравнить с артикулами/кодами товара в имеющемся у вас каталоге продукции:
Таблица артикулов
Как видно — в нашем каталоге только артикулы без наименований. У заказчика же помимо артикулов еще и название товара, т.е. много лишнего. И вам надо понять какие товары присутствуют в вашем каталоге, а какие нет:
Что получить
Стандартных формул в 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)

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

  1. Она ищет не обязательно именно точное совпадение с искомым, а максимально приближенное к нему. Если точнее — равное или большее искомому.
  2. Функция ПРОСМОТР(LOOKUP) старается преобразовать непосредственно в массив любое выражение, записанное вторым аргументом.
  3. Этими особенностями мы и будем пользоваться.

Как уже упомянул выше — в качестве диапазона для поиска значения обычно приводится массив ячеек, но т.к. функция ПРОСМОТР(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.

Так же см.:
Сравнение текста по части предложения
Что такое формула массива
Как найти значение в другой таблице или сила ВПР
ВПР с поиском по нескольким листам


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

  • Поиск по одному слову
    • Фильтрация по слову в Excel
    • Поиск по слову в ячейке: формула
    • Поиск по слову в Excel с помощью !SEMTools
  • Поиск по нескольким словам
    • Найти любое слово из списка
    • Найти все слова из списка

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

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

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

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

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

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

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

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

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

  1. Сделать копию исходного столбца;
  2. Удалить все символы, кроме текста и цифр (и пробелов между ними);
  3. Добавить символы в конце и начале каждой ячейки столбца, например, символ “”;
  4. Заменить оставшиеся пробелы на этот же символ;
  5. После этого фильтровать по полученному столбцу уже наше слово с “” перед и после него (пример – “слово”).

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

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

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

фильтр по слову в Excel - пример

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

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

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

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

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

Формула:

=ПОИСК(" "&"вашеСлово"&" ";" "&A1&" ")>0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

Пусть Исходный список значений (например, перечень инструментов) находится в диапазоне

A10:A19

(см.

Файл примера

).

Задача

Выведем в отдельный диапазон значения, которые удовлетворяют критерию. Рассмотрим различные варианты поиска.

А. Найти значения, которые содержат критерий

Для удобства создадим

именованный диапазон

Список

.

Диапазон может охватить в том числе и незаполненные ячейки перечня. В дальнейшем пользователь может расширить перечень инструментов, указанные ниже формулы автоматически учтут новые значения.

Выведем в отдельный диапазон все значения Исходного списка, в которых

содержится

текст-критерий (например, слово

дрель

). Критерий вводится в ячейку

С6

.

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

формулой массива

:

=ИНДЕКС(Список; НАИМЕНЬШИЙ( ЕСЛИ(ЕСЛИОШИБКА(ПОИСК($C$6;Список);0)>0;СТРОКА(Список)-СТРОКА($A$9);30); СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК(Список)))))

Алгоритм работы формулы следующий (для просмотра промежуточных шагов работы формулы воспользуйтесь

клавишей

F9

):

  • Функция

    ПОИСК()

    , перебирая элементы исходного списка, определяет, содержится ли в нем значение-критерий. Если значение не содержится, то возвращается ошибка #ЗНАЧ! В противном случае возвращается числовое значение, соответствующее номеру начальной позиции вхождения критерия в значение из списка (здесь нам не важен номер позиции, важно, что это число);
  • Функция

    ЕСЛИОШИБКА()

    используется для подавления ошибки #ЗНАЧ! заменяя ее на число 0;
  • Функция

    ЕСЛИ()

    заменяет числовые значения, возвращенные функцией

    ПОИСК()

    , на номер позиции значения в списке. Если значение =0 (соответствует ошибке #ЗНАЧ!), то возвращается число 30. В принципе, вместо 30 можно указать любое число, которое больше номера последней заполненной позиции Исходного списка (это нужно для правильной сортировки функцией

    НАИМЕНЬШИЙ()

    );
  • Функция

    НАИМЕНЬШИЙ()

    сортирует массив номеров строк по возрастанию;
  • Функция

    ДВССЫЛ()

    возвращает

    массив последовательных чисел

    ;

  • Функция

    ИНДЕКС()

    возвращает текстовые значения из Исходного списка, из строк, номера которых были получены на предыдущем шаге.

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

формулу массива

нужно распространять на диапазон той же размерности, что и исходный список. Вышеуказанная

формула массива будет возвращать несколько значений

, поэтому перед вводом формулы нужно выделить сразу весь диапазон, т.е. ячейки

С10:С19

, ввести формулу в

Строке формул

и нажать

CRTL+SHIFT+ENTER

.

Для скрытия ошибок #ССЫЛКА!, возвращаемой формулой массива, к диапазону

С10:С19

применено правило

Условного форматирования

.

Б. Найти значения, которые совпадают с критерием (точное совпадение)

В этом случае будут выведены все значения, которые совпадают с критерием (без

учета РЕгиСТра

). Критерий вводится в ячейку

E

6

.

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

формулой массива

:

=ИНДЕКС(Список; НАИМЕНЬШИЙ( ЕСЛИ($E$6=Список;СТРОКА(Список)-СТРОКА($A$9);30); СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК(Список)))))

B. Найти значения, которые начинаются с критерия

В этом случае будут выведены все значения, которые начинаются или совпадают с критерием. Критерий вводится в ячейку

G

6

.

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

формулой массива

: =

ИНДЕКС(Список;НАИМЕНЬШИЙ( ЕСЛИ(ЕСЛИОШИБКА(ПОИСК($G$6;Список);0)=1;СТРОКА(Список)-СТРОКА($A$9);30); СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК(Список)))))

Г. Найти значения, которые заканчиваются на критерий

В этом случае будут выведены все значения, которые заканчиваются или совпадают с критерием. Критерий вводится в ячейку

I

6

.

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

формулой массива

:

=ИНДЕКС(Список;НАИМЕНЬШИЙ( ЕСЛИ($I$6=ПРАВСИМВ(Список;ДЛСТР($I$6));СТРОКА(Список)-СТРОКА($A$9);30); СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК(Список)))))


СОВЕТ:

О поиске текстовых значений с использованием

подстановочных знаков

читайте в статье

Поиск текстовых значений в списках. Часть2. Подстановочные знаки

. В статье

Выделение ячеек c ТЕКСТом с применением Условного форматирования

приведено решение аналогичной задачи с использованием

Условного форматирования

.

Понравилась статья? Поделить с друзьями:
  • Поиск информации по таблице excel
  • Поиск информации в файле excel
  • Поиск информации в документе ms word на основе регулярных выражений
  • Поиск информации в базах данных excel
  • Поиск изменений в word