Вы когда-нибудь сталкивались с задачей анализа текстовых данных в Excel, когда нужно быстро выявить самые частые слова в столбце? Например, при обработке отзывов клиентов, анализе ключевых слов или проверке дубликатов в больших списках. Вручную это делать нереально — а вот с помощью формул, Power Query или VBA задача решается за минуты.
Многие пользователи ошибочно думают, что для подсчёта повторяющихся слов достаточно стандартной функции СЧЁТЕСЛИ. Но она работает только с точными совпадениями ячеек, а не с отдельными словами внутри текста. Если в ячейке A1 написано "красное яблоко", а в A2 — "зелёное яблоко", то СЧЁТЕСЛИ не увидит здесь повторения слова "яблоко". В этой статье мы разберём 5 рабочих методов, включая обработку регистра, знаков препинания и многого другого.
Для новичков начнём с простых формул, а для продвинутых пользователей — автоматизируем процесс с помощью Power Query и макросов. Все примеры адаптированы для Excel 2016–2023 и Microsoft 365, но большинство методов работают и в более ранних версиях.
1. Подсчёт повторяющихся слов с помощью формул (без VBA)
Самый универсальный способ — использовать комбинацию функций ДЛСТР, ПОДСТАВИТЬ и СУММПРОИЗВ. Этот метод не требует установки надстроек и работает даже в Excel Online.
Допустим, у вас есть список отзывов в столбце A (с A1 по A100), и вы хотите посчитать, сколько раз встречается слово "отлично". Формула будет такой:
=СУММПРОИЗВ(--(НЕОШИБКА(ПОИСК(" отлично "; " "&$A$1:$A$100&" "))))
Почему пробелы важны? Дело в том, что функция ПОИСК ищет подстроку, и без пробелов она может найти слово "отлично" внутри слова "неотличимый". Добавление пробелов до и после искомого слова решает эту проблему.
Чтобы сделать формулу динамической (например, искать слово из ячейки B1), используйте:
=СУММПРОИЗВ(--(НЕОШИБКА(ПОИСК(" "&$B$1&" "; " "&$A$1:$A$100&" "))))
⚠️ Внимание: Если в тексте есть знаки препинания (запятые, точки), их нужно предварительно заменить на пробелы с помощью ПОДСТАВИТЬ, иначе слово "отлично." и "отлично" будут считаться разными.
Для подсчёта всех уникальных слов в столбце потребуется более сложная конструкция с извлечением слов и созданием динамического списка. Об этом — в следующем разделе.
2. Автоматический разбор текста на слова с Power Query
Power Query (или Get & Transform в новых версиях Excel) — это мощный инструмент для преобразования данных, который идеально подходит для разбора текста. Он позволяет:
- 🔹 Разбить текст на отдельные слова
- 🔹 Привести их к нижнему регистру (чтобы "Excel" и "excel" считались одинаково)
- 🔹 Удалить знаки препинания
- 🔹 Подсчитать частоту каждого слова
Пошаговая инструкция:
- Выделите столбец с текстом и перейдите на вкладку
Данные → Получение данных → Из таблицы/диапазона. - В открывшемся редакторе Power Query выделите столбец, затем нажмите
Преобразовать → Разделить столбец → По разделителю. - В качестве разделителя укажите
неалфавитные символы(это удалит знаки препинания) и нажмитеОК. - Теперь выделите полученный столбец и выберите
Преобразовать → Формат → НИЖНИЙ РЕГИСТР. - Далее перейдите на вкладку
Главная → Группировка, выберите столбец со словами и операциюСчёт. - Сортируйте результат по убыванию, чтобы увидеть самые частые слова.
Преимущество метода: Power Query обрабатывает большие объёмы данных (десятки тысяч строк) намного быстрее, чем формулы. Кроме того, вы можете сохранить запрос и обновлять данные одним кликом.
Удалить лишние пробелы (функция СЖПРОБЕЛЫ)
Заменить тире/дефисы на пробелы (если нужно разделять составные слова)
Привести текст к единому регистру (НИЖН.РЕГ или ВЕРХ.РЕГ)
Удалить стоп-слова (предлоги, союзы) при необходимости-->
Если вам нужно исключить из подсчёта служебные слова (например, "и", "в", "на"), добавьте перед группировкой шаг фильтрации:
= Table.SelectRows(#"Предыдущий шаг", each not List.Contains({"и", "в", "на", "на"}, [Столбец со словами]))
3. Использование VBA для сложных задач
Когда формулы и Power Query не справляются (например, при работе с очень большими файлами или нестандартными условиями), на помощь приходит VBA. Ниже приведён макрос, который подсчитывает повторяющиеся слова в выделенном диапазоне и выводит результат на новый лист:
Sub CountWordFrequency()
Dim rng As Range, cell As Range
Dim dict As Object
Dim words() As String, word As Variant
Dim wsResult As Worksheet
Dim i As Long
' Создаём словарь для хранения слов и их количества
Set dict = CreateObject("Scripting.Dictionary")
' Получаем выделенный диапазон
Set rng = Selection
' Обрабатываем каждую ячейку
For Each cell In rng
If Not IsEmpty(cell.Value) Then
' Разбиваем текст на слова (учитываем пробелы, запятые, точки)
words = Split(Application.WorksheetFunction.Trim(Replace(Replace(Replace(LCase(cell.Value), ",", " "), ".", " "), "!", " ")))
' Добавляем слова в словарь
For Each word In words
If Len(Trim(word)) > 0 Then
If dict.Exists(Trim(word)) Then
dict(Trim(word)) = dict(Trim(word)) + 1
Else
dict.Add Trim(word), 1
End If
End If
Next word
End If
Next cell
' Создаём новый лист для результатов
Set wsResult = Worksheets.Add
wsResult.Name = "Частота слов"
' Выводим результаты
wsResult.Range("A1").Value = "Слово"
wsResult.Range("B1").Value = "Количество"
i = 2
For Each word In dict.Keys
wsResult.Cells(i, 1).Value = word
wsResult.Cells(i, 2).Value = dict(word)
i = i + 1
Next word
' Сортируем по убыванию
wsResult.Range("A1:B" & i - 1).Sort Key1:=wsResult.Range("B2"), Order1:=xlDescending
MsgBox "Готово! Результаты на листе '" & wsResult.Name & "'", vbInformation
End Sub
Как использовать:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Выделите диапазон с текстом и запустите макрос (
F5).
Этот скрипт автоматически:
- 🔹 Приводит слова к нижнему регистру
- 🔹 Удаляет знаки препинания
- 🔹 Игнорирует пустые ячейки
- 🔹 Сортирует результат по частоте
⚠️ Внимание: Если в тексте есть аббревиатуры с точками (например, "и т.д."), их нужно предварительно заменить на варианты без точек, иначе они будут разбиты на отдельные части ("и", "т", "д").
4. Подсчёт слов с учётом морфологии (продвинутый уровень)
Все предыдущие методы считают слова в точной форме. Но что если вам нужно, чтобы слова "бежал", "бегу" и "бежит" учитывались как одно слово "бежать"? Для этого потребуется лемматизация — приведение слов к их начальной форме.
В Excel это можно сделать двумя способами:
- С помощью внешних сервисов: Использовать Python с библиотекой
pymorphy2или Google Sheets с надстройкой Yandex.Speller для лемматизации, а затем импортировать данные обратно в Excel. - Через VBA с подключением к API: Написать макрос, который отправляет слова на обработку в сервис лемматизации (например, Dandelion API или AOT.ru) и получает нормализованные формы.
Пример кода для второго варианта (требуется ключ API от AOT.ru):
Function LemmatizeWord(word As String) As String
Dim http As Object, url As String, response As String
Set http = CreateObject("MSXML2.XMLHTTP")
' Замените YOUR_API_KEY на реальный ключ
url = "https://api.aot.ru/lemmatize?key=YOUR_API_KEY&text=" & word
http.Open "GET", url, False
http.Send
response = http.responseText
' Парсим JSON-ответ (упрощённый вариант)
LemmatizeWord = Split(Split(response, """lemma"":")(1), """")(2)
End Function
После этого вы можете использовать функцию =LemmatizeWord(A1) в ячейках, а затем применять стандартные методы подсчёта повторений.
Важно: лемматизация через API может быть платной при больших объёмах данных. Для бесплатного использования ограничьтесь 1000–2000 словами в месяц.
5. Визуализация результатов: диаграммы и условное форматирование
Подсчёт повторяющихся слов — это только половина дела. Чтобы данные были наглядными, их нужно визуализировать. Вот несколько идей:
1. Гистограмма частотности:
- 📊 Выделите столбец с результатами (слова + их количество).
- 📊 Перейдите на вкладку
Вставка → Вставить столбчатую или линейную диаграмму. - 📊 Для лучшей читаемости отсортируйте данные по убыванию перед построением.
2. Облако слов:
В Excel нет встроенного инструмента для облака слов, но вы можете:
- 🔗 Экспортировать данные в Python (библиотека
wordcloud) или R. - 🔗 Использовать онлайн-сервисы вроде WordArt.com или MonkeyLearn.
- 🔗 Вставить готовое облако как картинку на лист Excel.
3. Условное форматирование:
Чтобы быстро выделить самые частые слова в таблице:
- Выделите столбец с количеством повторений.
- Перейдите в
Главная → Условное форматирование → Цветовые шкалы. - Выберите схему "Зелёный — Жёлтый — Красный", где зелёный будет обозначать максимальную частоту.
| Метод визуализации | Когда использовать | Плюсы | Минусы |
|---|---|---|---|
| Столбчатая диаграмма | Для сравнения частоты 10–20 слов | Простота, наглядность | Неудобно при большом количестве слов |
| Облако слов | Для презентаций, отчётов | Красиво, интуитивно понятно | Требует внешних инструментов |
| Цветовые шкалы | Для быстрого анализа в таблице | Мгновенная визуализация | Не показывает точные значения |
| Спарклайны | Для компактного отображения трендов | Экономит место на листе | Малoinформативно для деталей |
6. Типичные ошибки и как их избежать
Даже опытные пользователи Excel допускают ошибки при подсчёте повторяющихся слов. Вот самые распространённые из них:
1. Игнорирование регистра:
Слова "Excel" и "excel" будут считаться разными, если не привести их к единому регистру. Решение: используйте НИЖН.РЕГ или ВЕРХ.РЕГ в формулах.
2. Знаки препинания:
Слово "привет!" и "привет" — это разные слова для Excel. Решение: замените знаки препинания на пробелы с помощью ПОДСТАВИТЬ:
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1; ","; " "); "."; " "); "!"; " ")
3. Составные слова:
Если в тексте есть словосочетания ("красное яблоко"), они будут разбиты на "красное" и "яблоко". Решение: либо учитывайте это как особенность, либо используйте регулярные выражения в VBA для более точного разбора.
4. Пустые ячейки:
Формулы могут выдавать ошибки, если в диапазоне есть пустые ячейки. Решение: добавьте проверку ЕСЛИОШИБКА или ЕПУСТО.
5. Большие данные:
Формулы массивов (например, с
1. Преобразуйте диапазон данных в умную таблицу ( 2. Отключите автоматический пересчёт ( 3. Разбейте сложные формулы на промежуточные столбцы. 4. Используйте Power Query для предварительной обработки данных.СУММПРОИЗВ) могут сильно тормозить при обработке более 10 000 строк. Решение: используйте Power Query или VBA.
Как ускорить работу формул?
Ctrl + T).Формулы → Параметры вычислений → Вручную).
7. Практический пример: анализ отзывов клиентов
Допустим, у вас есть таблица с отзывами клиентов о продукте, и вы хотите выявить самые частые слова, чтобы понять, что нравится или не нравится покупателям.
Исходные данные (столбец A):
- 📄 "Отличный товар! Быстрая доставка, спасибо!"
- 📄 "Доставка задержалась на 3 дня, недоволен."
- 📄 "Качество на высоте, рекомендую друзьям!"
- 📄 "Упаковка повреждена, товар пришёл битый."
Шаги анализа:
- Очистите текст от знаков препинания (как описано выше).
- Приведите все слова к нижнему регистру.
- Подсчитайте частоту каждого слова (например, с помощью Power Query).
- Исключите стоп-слова ("и", "на", "в" и т. д.).
- Постройте диаграмму топ-10 слов.
Ожидаемый результат:
Вы увидите, что слова "доставка", "товар" и "качество" встречаются чаще всего. Это сигнал для улучшения логистики или контроля качества упаковки.
Ключевой инсайт: отрицательные отзывы часто содержат конкретные слова ("задержалась", "повреждена", "битый"), которые можно выделить отдельно для оперативного реагирования.
FAQ: Ответы на частые вопросы
Можно ли посчитать повторяющиеся слова в Google Sheets?
Да, в Google Sheets используйте аналогичные формулы, но с небольшими изменениями:
- 🔹 Вместо
СУММПРОИЗВиспользуйтеSUMPRODUCT. - 🔹 Для регистронезависимого поиска оберните текст в
LOWER. - 🔹 В Google Sheets есть встроенная функция
=SPLITдля разбивки текста на слова.
Пример формулы:
=SUMPRODUCT(--(NOT(ISERROR(SEARCH(" "&LOWER(B1)&" ", " "&LOWER(A1:A100)&" ")))))
Как исключить из подсчёта определённые слова (например, предлоги)?
Создайте отдельный список стоп-слов в столбце (например, C1:C10) и модифицируйте формулу:
=СУММПРОИЗВ(--(НЕОШИБКА(ПОИСК(" "&$B$1&" "; " "&$A$1:$A$100&" ")); --(СЧЁТЕСЛИ($C$1:$C$10; $B$1)=0))
Эта формула проверяет, что искомое слово не содержится в списке стоп-слов.
Почему моя формула возвращает #ЗНАЧ!?
Ошибка #ЗНАЧ! обычно возникает по трём причинам:
- В диапазоне есть ячейки с ошибками (например, #ДЕЛ/0!). Используйте
ЕСЛИОШИБКА. - Несовпадение размеров массивов в
СУММПРОИЗВ. Убедитесь, что все диапазоны одинаковой длины. - Проблемы с регистром или знаками препинания. Проверьте очистку данных.
Можно ли посчитать повторяющиеся фразы (не отдельные слова)?
Да, но для этого нужно модифицировать подход:
- 🔹 Для двухсловных фраз (например, "быстрая доставка") используйте:
=СУММПРОИЗВ(--(НЕОШИБКА(ПОИСК(" "&$B$1&" "; " "&$A$1:$A$100&" "))))где в
B1указана вся фраза. - 🔹 Для Power Query добавьте шаг объединения соседних слов с разделителем (например, подставляйте пробел между столбцами).
Как автоматизировать обновление данных?
Если исходные данные часто меняются, настройте автоматическое обновление:
- 🔄 Для Power Query: нажмите
Данные → Обновить всеили настройте периодическое обновление вСвойствах соединения. - 🔄 Для VBA: добавьте макрос в событие открытия книги:
Private Sub Workbook_Open()Call CountWordFrequency ' Вызов вашего макроса
End Sub
- 🔄 Для формул: используйте умные таблицы (
Ctrl + T), которые автоматически расширяются при добавлении новых строк.