Извлечь из текста слова по списку в Excel
Возможности !SEMTools
↑ Навигация по задачам в Excel и возможностям надстройки !SEMTools ↑

Извлечь из ячейки слова, которые есть в вашем списке, можно формулой =ОБЪЕДИНИТЬ(" ";ИСТИНА;ЕСЛИ(ЕЧИСЛО(ПОИСК(" "&$D$2:$D$4&" ";" "&A2&" "));$D$2:$D$4;"")): ПОИСК проверяет каждое слово списка D2:D4 целиком (с пробелами по краям), ЕСЛИ оставляет найденные, а ОБЪЕДИНИТЬ склеивает их через пробел. Получить список всех слов из текста в Excel 365 можно функцией =ТЕКСТРАЗД(A2;;" "), а для сотен слов и тысяч строк, готовых списков маркеров и частей речи удобнее процедуры !SEMTools.

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

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

Далее подробнее о том, как с помощью надстройки !SEMTools решить эти задачи.

Извлечь слова из списка формулой

Формула работает в Excel 2019 и новее (в 2019 — ввод через Ctrl+Shift+Enter). Пробелы, добавленные к слову и к тексту ячейки, защищают от ложных совпадений: «эко» не найдётся внутри «эконом».

Извлечение слов из списка
B3=ОБЪЕДИНИТЬ(" ";ИСТИНА;ЕСЛИ(ЕЧИСЛО(ПОИСК(" "&$D$2:$D$4&" ";" "&A3&" "));$D$2:$D$4;""))
ABCD
1ТекстСлова из спискаСписок
2купить диван недорогокупить=ОБЪЕДИНИТЬ(" ";ИСТИНА;ЕСЛИ(ЕЧИСЛО(ПОИСК(" "&$D$2:$D$4&" ";" "&A2&" "));$D$2:$D$4;""))купить
3диван цена отзывыцена отзывы=ОБЪЕДИНИТЬ(" ";ИСТИНА;ЕСЛИ(ЕЧИСЛО(ПОИСК(" "&$D$2:$D$4&" ";" "&A3&" "));$D$2:$D$4;""))цена
4диван угловой=ОБЪЕДИНИТЬ(" ";ИСТИНА;ЕСЛИ(ЕЧИСЛО(ПОИСК(" "&$D$2:$D$4&" ";" "&A4&" "));$D$2:$D$4;""))отзывы
5купить диван ценакупить цена=ОБЪЕДИНИТЬ(" ";ИСТИНА;ЕСЛИ(ЕЧИСЛО(ПОИСК(" "&$D$2:$D$4&" ";" "&A5&" "));$D$2:$D$4;""))

Найденные слова выводятся в порядке списка, а не в порядке текста. Если ни одного слова нет (A4), ячейка остаётся пустой.

В английском Excel: =TEXTJOIN(" ",TRUE,IF(ISNUMBER(SEARCH(" "&$D$2:$D$4&" "," "&A2&" ")),$D$2:$D$4,""))

Если нужно только первое найденное слово, в Excel 365 подойдёт =ВЗЯТЬ(ФИЛЬТР($D$2:$D$4;ЕЧИСЛО(ПОИСК(" "&$D$2:$D$4&" ";" "&A2&" "));"");1). На тысячах строк и сотнях слов формулы ощутимо тормозят книгу — каждая ячейка сравнивается со всем списком.

Извлечь слова из списка в 2 клика с !SEMTools

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

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

Происходит следующее: если в ячейке имеется слово из диапазона, оно остается, если нет - удаляется. Таким образом, если в строке несколько слов, встречающиеся в диапазоне, останутся они все.

извлечь список слов из текста
Извлечь список слов из массива на примере 130 маркеров семейных отношений в романе "Евгений Онегин".

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

Извлечь слова из готовых списков маркеров

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

коммерческие маркеры в тексте

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

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

найти и извлечь глаголы в ячейках
Удаляем маркеры продажи (купить, заказать...) и извлекаем оставшиеся глаголы с !SEMTools

Извлечь из текущего списка все уникальные слова

Подробно о том, как проанализировать список фраз и собрать уникальные слова из него, я рассказал в другой статье: N-gram анализ в Excel.

Список слов из текста формулой

В Excel 365 текст ячейки раскладывается на слова в столбец функцией =ТЕКСТРАЗД(A2;;" ") (две точки с запятой — разделитель строк, а не столбцов). Список уникальных слов из целого столбца даёт комбинация:

=УНИК(ТЕКСТРАЗД(ОБЪЕДИНИТЬ(" ";ИСТИНА;A2:A100);;" "))

Ограничение: ОБЪЕДИНИТЬ возвращает не больше 32 767 символов, поэтому на больших столбцах формула выдаст #ЗНАЧ!. Для таких объёмов, а также чтобы сразу посчитать частоту слов, используйте N-gram анализ.

Почему слова не извлекаются

  • Слово стоит рядом со знаком препинания. В «купить, недорого» после слова запятая, и формула с пробелами его не найдёт. Сначала удалите знаки препинания.
  • Извлекается слово внутри другого слова. В формуле нет пробелов вокруг искомого слова и текста ячейки: ПОИСК("эко";A2) найдёт и «эконом».
  • Формула возвращает #ИМЯ?. ОБЪЕДИНИТЬ появилась в Excel 2019, ТЕКСТРАЗД, ВЗЯТЬ и УНИК — в Excel 365 и 2021. В старых версиях используйте процедуру !SEMTools.
  • Не находятся словоформы. Список «диван» не извлечёт «диваны» и «дивана». Приведите слова к начальной форме лемматизацией или добавьте формы в список.

Извлечение слов в Excel — частые вопросы

Как извлечь из ячейки слова из списка?

Формулой =ОБЪЕДИНИТЬ(" ";ИСТИНА;ЕСЛИ(ЕЧИСЛО(ПОИСК(" "&$D$2:$D$4&" ";" "&A2&" "));$D$2:$D$4;"")) или процедурой !SEMTools «Извлечь слова из списка» — она работает быстрее на больших объёмах.

Как получить список всех слов из текста?

В Excel 365 — =ТЕКСТРАЗД(A2;;" ") для одной ячейки и =УНИК(ТЕКСТРАЗД(ОБЪЕДИНИТЬ(" ";ИСТИНА;A2:A100);;" ")) для уникальных слов целого столбца.

Как извлечь только первое слово?

Формулой =ЛЕВСИМВ(A2;ПОИСК(" ";A2&" ")-1) — подробно в статье как извлечь слова из ячейки.

Различает ли поиск регистр?

Нет: ПОИСК и процедура !SEMTools не различают регистр. Если регистр важен, замените ПОИСК на НАЙТИ.

Извлечь из тысяч ячеек слова из вашего списка, коммерческие маркеры или нужные части речи можно в пару кликов с !SEMTools — без формул массива и ограничений по длине текста.
!SEMTools решает эту и сотни других задач в пару кликов!

Итоги: как извлечь слова из текста в Excel

ЗадачаСпособ
Слова из своего спискаОБЪЕДИНИТЬ + ЕСЛИ + ПОИСК (Excel 2019+)
Все слова ячейки в столбец=ТЕКСТРАЗД(A2;;" ") (Excel 365)
Уникальные слова столбцаУНИК + ТЕКСТРАЗД или N-gram анализ
Маркеры, части речи, большие объёмыПроцедуры !SEMTools

Надеюсь, на этой странице вы нашли то, что искали. Вас наверняка заинтересуют и похожие операции: поиск по слову в ячейках и удалить список слов из текста.