Как в Excel посчитать количество повторяющихся слов в столбце: от простых формул до автоматизации

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

Многие пользователи ошибочно думают, что для подсчёта повторяющихся слов достаточно стандартной функции СЧЁТЕСЛИ. Но она работает только с точными совпадениями ячеек, а не с отдельными словами внутри текста. Если в ячейке A1 написано "красное яблоко", а в A2"зелёное яблоко", то СЧЁТЕСЛИ не увидит здесь повторения слова "яблоко". В этой статье мы разберём 5 рабочих методов, включая обработку регистра, знаков препинания и многого другого.

Для новичков начнём с простых формул, а для продвинутых пользователей — автоматизируем процесс с помощью Power Query и макросов. Все примеры адаптированы для Excel 2016–2023 и Microsoft 365, но большинство методов работают и в более ранних версиях.

1. Подсчёт повторяющихся слов с помощью формул (без VBA)

Самый универсальный способ — использовать комбинацию функций ДЛСТР, ПОДСТАВИТЬ и СУММПРОИЗВ. Этот метод не требует установки надстроек и работает даже в Excel Online.

Допустим, у вас есть список отзывов в столбце AA1 по A100), и вы хотите посчитать, сколько раз встречается слово "отлично". Формула будет такой:

=СУММПРОИЗВ(--(НЕОШИБКА(ПОИСК(" отлично "; " "&$A$1:$A$100&" "))))

Почему пробелы важны? Дело в том, что функция ПОИСК ищет подстроку, и без пробелов она может найти слово "отлично" внутри слова "неотличимый". Добавление пробелов до и после искомого слова решает эту проблему.

Чтобы сделать формулу динамической (например, искать слово из ячейки B1), используйте:

=СУММПРОИЗВ(--(НЕОШИБКА(ПОИСК(" "&$B$1&" "; " "&$A$1:$A$100&" "))))
⚠️ Внимание: Если в тексте есть знаки препинания (запятые, точки), их нужно предварительно заменить на пробелы с помощью ПОДСТАВИТЬ, иначе слово "отлично." и "отлично" будут считаться разными.

Для подсчёта всех уникальных слов в столбце потребуется более сложная конструкция с извлечением слов и созданием динамического списка. Об этом — в следующем разделе.

📊 Какой метод подсчёта слов в Excel вы используете чаще?
Формулы (СУММПРОИЗВ, ПОИСК)
Power Query
VBA
Другие инструменты

2. Автоматический разбор текста на слова с Power Query

Power Query (или Get & Transform в новых версиях Excel) — это мощный инструмент для преобразования данных, который идеально подходит для разбора текста. Он позволяет:

  • 🔹 Разбить текст на отдельные слова
  • 🔹 Привести их к нижнему регистру (чтобы "Excel" и "excel" считались одинаково)
  • 🔹 Удалить знаки препинания
  • 🔹 Подсчитать частоту каждого слова

Пошаговая инструкция:

  1. Выделите столбец с текстом и перейдите на вкладку Данные → Получение данных → Из таблицы/диапазона.
  2. В открывшемся редакторе Power Query выделите столбец, затем нажмите Преобразовать → Разделить столбец → По разделителю.
  3. В качестве разделителя укажите неалфавитные символы (это удалит знаки препинания) и нажмите ОК.
  4. Теперь выделите полученный столбец и выберите Преобразовать → Формат → НИЖНИЙ РЕГИСТР.
  5. Далее перейдите на вкладку Главная → Группировка, выберите столбец со словами и операцию Счёт.
  6. Сортируйте результат по убыванию, чтобы увидеть самые частые слова.

Преимущество метода: 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

Как использовать:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Выделите диапазон с текстом и запустите макрос (F5).

Этот скрипт автоматически:

  • 🔹 Приводит слова к нижнему регистру
  • 🔹 Удаляет знаки препинания
  • 🔹 Игнорирует пустые ячейки
  • 🔹 Сортирует результат по частоте
⚠️ Внимание: Если в тексте есть аббревиатуры с точками (например, "и т.д."), их нужно предварительно заменить на варианты без точек, иначе они будут разбиты на отдельные части ("и", "т", "д").

4. Подсчёт слов с учётом морфологии (продвинутый уровень)

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

В Excel это можно сделать двумя способами:

  1. С помощью внешних сервисов: Использовать Python с библиотекой pymorphy2 или Google Sheets с надстройкой Yandex.Speller для лемматизации, а затем импортировать данные обратно в Excel.
  2. Через 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. Условное форматирование:

Чтобы быстро выделить самые частые слова в таблице:

  1. Выделите столбец с количеством повторений.
  2. Перейдите в Главная → Условное форматирование → Цветовые шкалы.
  3. Выберите схему "Зелёный — Жёлтый — Красный", где зелёный будет обозначать максимальную частоту.
Метод визуализации Когда использовать Плюсы Минусы
Столбчатая диаграмма Для сравнения частоты 10–20 слов Простота, наглядность Неудобно при большом количестве слов
Облако слов Для презентаций, отчётов Красиво, интуитивно понятно Требует внешних инструментов
Цветовые шкалы Для быстрого анализа в таблице Мгновенная визуализация Не показывает точные значения
Спарклайны Для компактного отображения трендов Экономит место на листе Малoinформативно для деталей

6. Типичные ошибки и как их избежать

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

1. Игнорирование регистра:

Слова "Excel" и "excel" будут считаться разными, если не привести их к единому регистру. Решение: используйте НИЖН.РЕГ или ВЕРХ.РЕГ в формулах.

2. Знаки препинания:

Слово "привет!" и "привет" — это разные слова для Excel. Решение: замените знаки препинания на пробелы с помощью ПОДСТАВИТЬ:

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1; ","; " "); "."; " "); "!"; " ")

3. Составные слова:

Если в тексте есть словосочетания ("красное яблоко"), они будут разбиты на "красное" и "яблоко". Решение: либо учитывайте это как особенность, либо используйте регулярные выражения в VBA для более точного разбора.

4. Пустые ячейки:

Формулы могут выдавать ошибки, если в диапазоне есть пустые ячейки. Решение: добавьте проверку ЕСЛИОШИБКА или ЕПУСТО.

5. Большие данные:

Формулы массивов (например, с СУММПРОИЗВ) могут сильно тормозить при обработке более 10 000 строк. Решение: используйте Power Query или VBA.

Как ускорить работу формул?

1. Преобразуйте диапазон данных в умную таблицу (Ctrl + T).

2. Отключите автоматический пересчёт (Формулы → Параметры вычислений → Вручную).

3. Разбейте сложные формулы на промежуточные столбцы.

4. Используйте Power Query для предварительной обработки данных.

7. Практический пример: анализ отзывов клиентов

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

Исходные данные (столбец A):

  • 📄 "Отличный товар! Быстрая доставка, спасибо!"
  • 📄 "Доставка задержалась на 3 дня, недоволен."
  • 📄 "Качество на высоте, рекомендую друзьям!"
  • 📄 "Упаковка повреждена, товар пришёл битый."

Шаги анализа:

  1. Очистите текст от знаков препинания (как описано выше).
  2. Приведите все слова к нижнему регистру.
  3. Подсчитайте частоту каждого слова (например, с помощью Power Query).
  4. Исключите стоп-слова ("и", "на", "в" и т. д.).
  5. Постройте диаграмму топ-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))

Эта формула проверяет, что искомое слово не содержится в списке стоп-слов.

Почему моя формула возвращает #ЗНАЧ!?

Ошибка #ЗНАЧ! обычно возникает по трём причинам:

  1. В диапазоне есть ячейки с ошибками (например, #ДЕЛ/0!). Используйте ЕСЛИОШИБКА.
  2. Несовпадение размеров массивов в СУММПРОИЗВ. Убедитесь, что все диапазоны одинаковой длины.
  3. Проблемы с регистром или знаками препинания. Проверьте очистку данных.
Можно ли посчитать повторяющиеся фразы (не отдельные слова)?

Да, но для этого нужно модифицировать подход:

  • 🔹 Для двухсловных фраз (например, "быстрая доставка") используйте:
    =СУММПРОИЗВ(--(НЕОШИБКА(ПОИСК(" "&$B$1&" "; " "&$A$1:$A$100&" "))))

    где в B1 указана вся фраза.

  • 🔹 Для Power Query добавьте шаг объединения соседних слов с разделителем (например, подставляйте пробел между столбцами).
Как автоматизировать обновление данных?

Если исходные данные часто меняются, настройте автоматическое обновление:

  • 🔄 Для Power Query: нажмите Данные → Обновить все или настройте периодическое обновление в Свойствах соединения.
  • 🔄 Для VBA: добавьте макрос в событие открытия книги:
    Private Sub Workbook_Open()
    

    Call CountWordFrequency ' Вызов вашего макроса

    End Sub

  • 🔄 Для формул: используйте умные таблицы (Ctrl + T), которые автоматически расширяются при добавлении новых строк.