Подсчёт повторяющихся слов в Microsoft Excel — задача, с которой сталкиваются аналитики, копирайтеры, маркетологи и даже студенты. Вы хотите узнать, сколько раз встречается ключевое слово в отчёте? Или нужно выявить самые частые термины в опросе? Возможно, вам требуется очистить текст от дублей перед импортом в другую систему. В любом случае, Excel предлагает несколько способов решить эту задачу — от элементарных формул до автоматизированных скриптов.
Многие пользователи ошибочно думают, что для работы с текстом в Excel нужны специализированные программы вроде Python или R. На деле же даже базовые функции типа СЧЁТЕСЛИ или ПОИСКПОЗ способны справиться с 80% задач. А если данных много, на помощь приходят Power Query или VBA-макросы. Главное — выбрать метод, соответствующий вашему уровню владения программой и объёму текста.
В этой статье мы разберём 5 проверенных способов подсчёта одинаковых слов — от ручных до полуавтоматических. Вы узнаете, как обработать как один столбец, так и целую таблицу, как учесть регистр и знаки препинания, а также как визуализировать результаты. Начнём с самого простого и постепенно перейдём к продвинутым техникам.
1. Базовый метод: функция СЧЁТЕСЛИ для одного столбца
Если все слова, которые нужно посчитать, находятся в одном столбце, а список уникальных терминов у вас уже есть — этот способ для вас. Функция СЧЁТЕСЛИ (или COUNTIF в английской версии) идеально подходит для подсчёта вхождений конкретного слова в диапазоне.
Допустим, у вас в столбце A перечислены товары из заказа, а в столбце D — уникальные названия этих товаров. Чтобы посчитать, сколько раз каждый товар встречается в заказах, введите в ячейку E2 формулу:
=СЧЁТЕСЛИ($A$2:$A$100; D2)
Здесь $A$2:$A$100 — диапазон с исходными данными (зафиксирован абсолютными ссылками), а D2 — ячейка с уникальным словом, которое мы ищем. Растяните формулу вниз — и получите количество вхождений для каждого термина.
- ✅ Плюсы: простота, работает во всех версиях Excel.
- ❌ Минусы: не учитывает регистр (слова "Кот" и "кот" будут считаться одинаковыми), не умеет автоматически выделять уникальные слова.
- 🔹 Нюанс: если в ячейках несколько слов (например, "красное яблоко"), формула будет искать точные совпадения всей фразы, а не отдельного слова.
⚠️ Внимание: Если в ваших данных есть лишние пробелы или непечатаемые символы,СЧЁТЕСЛИможет их не заметить. Предварительно очистите текст функциейСЖПРОБЕЛЫили комбинациейПЕЧСИМВ+ЗАМЕНИТЬ.
2. Подсчёт слов в ячейках с несколькими словами
Что делать, если в одной ячейке содержится целый текст (например, отзыв клиента или описание товара), а вам нужно посчитать, сколько раз в нём встречается конкретное слово? Здесь поможет комбинация функций ДЛСТР, ЗАМЕНИТЬ и ПОДСТАВИТЬ.
Формула для подсчёта слова "отлично" в ячейке A2:
= (ДЛСТР(A2) - ДЛСТР(ПОДСТАВИТЬ(A2; "отлично"; ""))) / ДЛСТР("отлично")
Как это работает:
- Функция
ПОДСТАВИТЬудаляет все вхождения слова "отлично" из текста. ДЛСТРсравнивает длину исходного текста и текста без искомого слова.- Разница делится на длину искомого слова — так мы получаем количество вхождений.
| Исходный текст (A2) | Формула | Результат |
|---|---|---|
| "Отлично! Сервис отличный, всё отлично работает." | = (ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;"отлично";"")))/ДЛСТР("отлично") | 3 |
| "Хороший товар, но дороговато." | = (ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;"отлично";"")))/ДЛСТР("отлично") | 0 |
| "отлично, ОТЛИЧНО, Отлично!" | = (ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;"отлично";"")))/ДЛСТР("отлично") | 0 |
Обратите внимание на третий пример: формула не учитывает регистр! Чтобы исправить это, используйте ПОИСК в массиве (см. следующий раздел) или предварительно приведите текст к нижнему регистру функцией НИЖНРЕГ.
3. Продвинутый подход: формулы массива для учёта регистра
Когда важно различать слова "Кот" и "кот", а также игнорировать знаки препинания, на помощь приходят формулы массива. Они позволяют обрабатывать текст более гибко, но требуют аккуратности при вводе.
Вот универсальная формула для подсчёта слова с учётом регистра (вводится как Ctrl+Shift+Enter в старых версиях Excel или просто Enter в Excel 365):
=СУММ(
--(
НЕ(ОШИБКА(
ПОИСК(
" " & D2 & " ";
" " & ПОДСТАВИТЬ(A2;",";" ") & " "
)
))
)
)
Пояснения:
ПОДСТАВИТЬ(A2;",";" ")— заменяем запятые на пробелы, чтобы не мешали поиску." " & D2 & " "— ищем слово, окружённое пробелами (чтобы не путать "кот" и "котик").--(НЕ(ОШИБКА(...)))— преобразуем логические значения в 1 и 0 для суммирования.
⚠️ Внимание: Эта формула не учитывает слова в начале или конце предложения без пробелов (например, "Кот бежал."). Чтобы исправить это, добавьте в начало и конец текста пробелы вручную или через формулу: " " & A2 & " ".
Как ввести формулу массива в Excel 2019 и старше?
В новых версиях Excel (2019, 365) формулы массива вводятся как обычные — просто нажмите Enter. Фигурные скобки {} добавятся автоматически. В Excel 2016 и ранее нужно нажать Ctrl+Shift+Enter.
4. Автоматическое выделение уникальных слов + подсчёт
Если у вас нет готового списка уникальных слов, его можно сгенерировать автоматически. Для этого понадобятся две функции: УНИК (в Excel 365) или комбинация ЧАСТОТА + ИНДЕКС в старых версиях.
Способ 1. Для Excel 365 (простой):
- Выделите ячейку, где хотите получить уникальные слова.
- Введите формулу:
=УНИК(A2:A100)и нажмитеEnter. - Рядом добавьте
СЧЁТЕСЛИдля подсчёта каждого слова (как в разделе 1).
Способ 2. Для Excel 2016 и старше (сложнее):
- Создайте вспомогательный столбец с формулой:
=ЕСЛИОШИБКА(ИНДЕКС($A$2:$A$100; ПОИСКПОЗ(0; СЧЁТЕСЛИ($B$1:B1; $A$2:$A$100) + ЕСЛИ($A$2:$A$100=""; 1; 0); 0)); "")(вводится как формула массива!). - Растяните её вниз до появления пустых ячеек — это будут уникальные значения.
- Используйте
СЧЁТЕСЛИдля подсчёта.
Для больших данных (10 000+ строк) эти методы могут тормозить. В таком случае лучше использовать Power Query (см. следующий раздел).
Удалить лишние пробелы (СЖПРОБЕЛЫ)
Привести текст к нижнему регистру (НИЖНРЕГ)
Заменить знаки препинания на пробелы (ПОДСТАВИТЬ)
Разбить текст на отдельные слова (ТЕКСТ.ПОСЛЕ, ТЕКСТ.ДО)-->
5. Power Query: обработка больших текстов без формул
Power Query — единственный инструмент в Excel, который способен эффективно обработать текстовые данные объёмом более 100 000 строк без зависаний. Он позволяет разделить текст на слова, удалить стоп-слова (предлоги, союзы), привести к нижнему регистру и посчитать частоту вхождений — всё в одном интерфейсе.
Пошаговая инструкция:
- Выделите исходные данные и нажмите
Данные → Из таблицы/диапазона(в Excel 2016+) илиPower Query → Из таблицы. - В открывшемся редакторе выделите столбец с текстом, нажмите
Преобразовать → Разделить столбец → По разделителюи укажите пробел. - Выделите полученные столбцы со словами, нажмите
Преобразовать → Развернуть— так вы получите каждое слово в отдельной строке. - Удалите пустые строки и приведите слова к нижнему регистру (
Преобразовать → Регистр → нижний). - Выделите столбец со словами, нажмите
Главная → Группировкаи выберите операцию "Количество строк". - Нажмите
Закрыть и загрузить— результат появится на новом листе.
Преимущества Power Query:
- ⚡ Обрабатывает миллионы строк без тормозов.
- 🔄 Легко обновляется при изменении исходных данных (правый клик по таблице →
Обновить). - 🛠️ Позволяет удалять стоп-слова (например, "и", "в", "на") на этапе преобразования.
6. VBA-макрос для автоматизации подсчёта
Если вам часто приходится считать слова в Excel, имеет смысл написать VBA-макрос. Он позволит обработать данные в один клик и даже сохранить результаты в отдельном файле.
Пример макроса для подсчёта слов в выделенном диапазоне:
Sub CountWords()
Dim rng As Range, cell As Range, dict As Object
Dim words() As String, word As Variant
Dim i As Long, wordCount As Long
' Создаём объект Dictionary для хранения слов
Set dict = CreateObject("Scripting.Dictionary")
' Проходим по каждой ячейке в выделенном диапазоне
For Each cell In Selection
' Разбиваем текст на слова (разделитель - пробел)
words = Split(Application.WorksheetFunction.Trim(cell.Value), " ")
' Добавляем слова в Dictionary
For i = LBound(words) To UBound(words)
word = LCase(Trim(words(i))) ' Приводим к нижнему регистру
If Len(word) > 0 Then
If dict.Exists(word) Then
dict(word) = dict(word) + 1
Else
dict.Add word, 1
End If
End If
Next i
Next cell
' Выводим результаты на новый лист
Sheets.Add
ActiveSheet.Range("A1").Value = "Слово"
ActiveSheet.Range("B1").Value = "Количество"
i = 2
For Each word In dict.Keys
Cells(i, 1).Value = word
Cells(i, 2).Value = dict(word)
i = i + 1
Next word
' Сортируем по убыванию
Range("A1:B" & i - 1).Sort Key1:=Range("B2"), Order1:=xlDescending
End Sub
Как использовать:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Выделите диапазон с текстом на листе и запустите макрос (
F5).
⚠️ Внимание: Макрос учитывает только пробелы как разделители. Если в тексте есть запятые, точки с запятой или другие знаки, предварительно замените их на пробелы функцией ПОДСТАВИТЬ или модифицируйте код макроса.
7. Визуализация результатов: диаграммы и условное форматирование
Подсчёт слов — это только половина дела. Чтобы данные было удобно анализировать, их нужно визуализировать. Вот несколько идей:
- 📊 Гистограмма: Выделите столбец со словами и столбец с количеством, затем нажмите
Вставка → Гистограмма. Отсортируйте данные по убыванию для наглядности. - 🎨 Облако слов: Для этого понадобится надстройка (например, WordCloud для Excel) или экспорт данных в Python/R.
- 🔥 Условное форматирование: Выделите ячейки с количеством и примените цветовую шкалу (
Главная → Условное форматирование → Цветовые шкалы). - 📌 Спарклайны: Маленькие графики в ячейках, показывающие динамику использования слова (если данные привязаны ко времени).
Пример настройки условного форматирования для выделения самых частых слов:
- Выделите диапазон с количеством вхождений.
- Нажмите
Условное форматирование → Правила отбора первых и последних значений → Первые 10 элементов. - Укажите количество элементов (например, 5) и выберите цвет (например, зелёный).
Для динамических данных свяжите диаграмму с таблицей Excel (Вставка → Таблица). Тогда при обновлении исходных данных график будет перестраиваться автоматически.
8. Типичные ошибки и как их избежать
Даже опытные пользователи Excel допускают ошибки при работе с текстовыми данными. Вот самые распространённые из них и способы их решения:
| Ошибка | Причина | Решение |
|---|---|---|
| Формула не считает слова в начале/конце предложения | Отсутствуют пробелы перед/после искомого слова | Добавьте пробелы в формулу: " " & A2 & " " |
| Слова с разным регистром считаются одинаковыми | СЧЁТЕСЛИ нечувствительна к регистру | Используйте НИЖНРЕГ или формулы массива (раздел 3) |
| Excel "завис" при обработке больших данных | Слишком много формул массива или неоптимизированный код VBA | Перейдите на Power Query или разбивайте данные на части |
| В результатах есть пустые строки или символы | В исходных данных есть непечатаемые символы | Очистите текст: =СЖПРОБЕЛЫ(ПЕЧСИМВ(A2)) |
| Формула считает часть слова (например, "кот" в "котик") | Нет разделителей между словами | Используйте поиск по шаблону: " " & слово & " " |
Ещё одна частая проблема — кириллические и латинские символы. Если ваш текст содержит смешанные алфавиты (например, "iPhone X"), убедитесь, что в настройках Windows и Excel установлена правильная кодировка (обычно UTF-8). Для проверки используйте функцию =КОДСИМВ(ЛЕВСИМВ(A2)) — она должна вернуть корректный код символа.
FAQ: Ответы на частые вопросы
Можно ли посчитать слова в Excel Online?
Да, но с ограничениями. В Excel Online доступны базовые функции вроде СЧЁТЕСЛИ и ПОДСТАВИТЬ, но нет Power Query и возможности запуска VBA-макросов. Для сложных задач лучше использовать десктопную версию Excel или Google Sheets (где есть функция QUERY для работы с текстом).
Как посчитать слова в Google Таблицах?
В Google Sheets можно использовать аналогичные формулы:
- Для подсчёта в одном столбце:
=COUNTIF(A:A; D2). - Для подсчёта в тексте:
= (LEN(A2) - LEN(SUBSTITUTE(A2; "кот"; ""))) / LEN("кот"). - Для уникальных слов:
=UNIQUE(A:A).
Также в Google Таблицах есть функция =REGEXMATCH для работы с регулярными выражениями, что упрощает поиск слов с учётом регистра и знаков препинания.
Как исключить стоп-слова (предлоги, союзы) из подсчёта?
Есть три способа:
- Ручной: После получения списка уникальных слов удалите ненужные вручную.
- Power Query: На этапе преобразования добавьте фильтр, исключающий слова из вашего стоп-листа (например, "и", "в", "на").
- VBA: Модифицируйте макрос из раздела 6, добавив проверку на стоп-слова перед добавлением в
Dictionary.
Пример стоп-листа для русского языка: "и", "в", "на", "с", "по", "из", "у", "к", "о", "об", "за", "над", "под", "при".
Можно ли посчитать слова в PDF или Word через Excel?
Прямо в Excel — нет, но можно экспортировать текст из PDF или Word в Excel и затем обработать его. Способы экспорта:
- Для Word: откройте документ, нажмите
Файл → Сохранить как → Текстовый файл (.txt), затем импортируйте в Excel черезДанные → Из текста. - Для PDF: используйте Adobe Acrobat (Файл → Экспорт → Таблица Excel) или бесплатные онлайн-конвертеры (например, Smallpdf).
После экспорта очистите данные от лишних символов и примените один из методов из этой статьи.
Как посчитать биграммы (парные сочетания слов)?
Биграммы (например, "машинное обучение") считаются аналогично одиночным словам, но с модификацией формул. Пример для Power Query:
- Разделите текст на слова (как в разделе 5).
- Добавьте пользовательский столбец с формулой
[Слово1] & " " & [Слово2](гдеСлово1иСлово2— соседние слова). - Сгруппируйте данные по этому столбцу и посчитайте количество строк.
Для VBA понадобится модифицировать макрос, чтобы он обрабатывал пары слов вместо одиночных.