Вы когда-нибудь сталкивались с задачей подсчёта повторяющихся слов в огромном списке данных? Например, когда нужно проанализировать частотность упоминаний брендов в отзывах, выявить самые популярные запросы в логах поиска или просто очистить текст от дублей. Вручную это делать нереально — Excel приходит на помощь с целым арсеналом инструментов. Но здесь кроется подвох: стандартных функций для прямого подсчёта слов в ячейках нет. Придётся комбинировать формулы, использовать надстройки или даже писать макросы.
В этой статье мы разберём 5 проверенных способов, как посчитать одинаковые слова в Excel — от элементарных методов для новичков до продвинутых решений для обработки тысяч строк. Вы узнаете, как обойти ограничения программы, избежать типичных ошибок (например, когда ПРОПИСНЫЕ и строчные буквы считаются разными словами) и автоматизировать процесс. А в конце — бонус: готовая таблица с формулами, которую можно скопировать и использовать сразу.
Но прежде чем погружаться в детали, ответьте на один вопрос:
Если вы работаете с текстами в Excel регулярно, этот гайд сэкономит вам часы времени. Если же только начинаете — не переживайте: мы начнём с самого простого.
1. Подсчёт одинаковых слов в одной ячейке
Допустим, у вас есть ячейка с текстом типа "яблоко банан яблоко груша банан яблоко", и нужно узнать, сколько раз встречается каждое слово. В чистом Excel для этого нет одной функции, но можно обойтись комбинацией ПОДСТАВИТЬ, ДЛСТР и НАЙТИ.
Вот универсальная формула для подсчёта количества вхождений конкретного слова (например, "яблоко") в ячейке A1:
= (ДЛСТР($A1) - ДЛСТР(ПОДСТАВИТЬ($A1; "яблоко"; ""))) / ДЛСТР("яблоко")
Как это работает:
ПОДСТАВИТЬудаляет все вхождения слова "яблоко" из текста.ДЛСТРсравнивает длину исходного текста и текста без искомого слова.- Результат делится на длину слова — так мы получаем точное количество повторений.
⚠️ Внимание! Формула чувствительна к регистру. Если в тексте есть "Яблоко" с большой буквы, а вы ищете "яблоко" — они посчитаются как разные слова. Чтобы игнорировать регистр, используйте функцию НИЖН.РЕГ:
= (ДЛСТР($A1) - ДЛСТР(ПОДСТАВИТЬ(НИЖН.РЕГ($A1); "яблоко"; ""))) / ДЛСТР("яблоко")
А что, если нужно посчитать все уникальные слова в ячейке автоматически? Для этого потребуется более сложный подход — об этом в следующем разделе.
2. Автоматический подсчёт всех слов в ячейке (с выводом частотности)
Чтобы вывести список уникальных слов и их количество в одной ячейке, придётся использовать пользовательскую функцию на VBA или комбинацию из нескольких столбцов. Рассмотрим оба варианта.
Способ 1: Без макросов (для Excel 2019 и новее)
Если у вас Excel 365 или Excel 2021, можно обойтись без VBA благодаря функциям ТЕКСТРАЗД и УНИК:
- Разбейте текст на слова с помощью
=ТЕКСТРАЗД(A1; ;" ")(разделитель — пробел). - Извлеките уникальные слова:
=УНИК(ТЕКСТРАЗД(A1; ;" ")). - Подсчитайте частотность каждого слова с
=СЧЁТЕСЛИ.
Способ 2: С макросом (работает во всех версиях Excel)
Если у вас старая версия программы, создайте пользовательскую функцию:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте новый модуль (
Insert → Module) и скопируйте этот код:Function WordCount(rng As Range, word As String) As LongDim arr() As String
arr = Split(Application.WorksheetFunction.Substitute(rng.Value, ",", " "), " ")
WordCount = UBound(Filter(arr, word)) + 1
End Function
- Теперь в ячейке можно использовать
=WordCount(A1; "яблоко").
⚠️ Внимание! Макрос не учитывает знаки препинания. Если в тексте есть "яблоко," или "яблоко!", они посчитаются отдельно от "яблоко". Чтобы этого избежать, предварительно очистите текст от пунктуации с помощью ПОДСТАВИТЬ.
Удалить запятые и точки (ПОДСТАВИТЬ на пробел)|Привести текст к нижнему регистру (НИЖН.РЕГ)|Разбить текст на отдельные слова (ТЕКСТРАЗД или Split в VBA)|Удалить пустые ячейки (ЕСЛИ + ПУСТО)-->
3. Подсчёт повторяющихся слов в столбце
Если слова распределены по разным ячейкам столбца (например, в A1:A100 перечислены товары), задача упрощается. Здесь поможет комбинация СЧЁТЕСЛИ + УНИК (для новых версий) или сводная таблица (для старых).
Для Excel 2019/365:
=СЧЁТЕСЛИ($A$1:$A$100; УНИК(A1:A100))
Эта формула вернёт массив с количеством каждого уникального слова. Чтобы вывести его в отдельный столбец, нажмите Ctrl + Shift + Enter (в старых версиях) или просто Enter (в новых).
Для Excel 2010—2016:
Создайте сводную таблицу:
- Выделите столбец с данными.
- Нажмите
Вставка → Сводная таблица. - Перетащите поле со словами в область
СтрокииЗначения. - Готово! Сводная таблица автоматически посчитает повторения.
4. Учёт морфологии: подсчёт слов в разных формах
Одна из самых сложных задач — посчитать слова с учётом их форм. Например, "яблоко", "яблока", "яблоку" должны считаться как одно слово. В чистом Excel это невозможно — потребуется внешний инструмент или надстройка.
Вариант 1: Использовать Power Query
Power Query (доступен в Excel 2016 и новее) позволяет подключаться к сервисам лемматизации (приведения слов к начальной форме). Например, можно экспортировать данные в Python через Вариант 2: Надстройка Ablebits
Плагин Ablebits имеет инструмент Вариант 3: Ручное решение (для небольших списков)
Создайте справочник форм слова (например, в столбце
Лемматизация — это процесс приведения слова к его начальной (словарной) форме. Например, "бежал", "бегу", "бежать" преобразуются в лемму "бежать". В русском языке это сложнее, чем в английском, из-за богатой морфологии. Для точного анализа используют специализированные библиотеки, такие как pymorphy2 (Python) или TreeTagger. Когда данные посчитаны, их нужно представить наглядно. Для этого подойдут:
Пример создания гистограммы:
Для тепловой карты:
Даже опытные пользователи Excel сталкиваются с проблемами при подсчёте слов. Вот самые распространённые:
⚠️ Внимание! Если вы работаете с кириллическими текстами в английской версии Excel, некоторые функции (например, Для сложных задач (например, поиска слов по шаблону или обработки больших текстов) стандартных средств Excel недостаточно. Здесь помогут:
Регулярные выражения (Regex)
В Excel нет встроенной поддержки regex, но можно использовать:
Пример на Python (подсчёт слов с учётом регистра):
from collections import Counter text = "яблоко банан яблоко груша банан яблоко" words = re.findall(r'\w+', text.lower()) # игнорируем регистр и пунктуацию print(Counter(words)) # Output: Counter({'яблоко': 3, 'банан': 2, 'груша': 1}) Интеграция с Power BI
Если вам нужно анализировать тексты регулярно, перенесите данные в Power BI:
Да, но с ограничениями:
Однако для точного подсчёта внутри одной ячейки формулы или VBA всё равно потребуются.
Потому что Excel по умолчанию учитывает регистр. Решения:
Если слова разбросаны по нескольким ячейкам (например, Затем применяйте формулы подсчёта к результату. В Excel 365 можно использовать Да, если использовать:
Ограничения Excel по тексту:
Если ваш текст длиннее, разбивайте его на части или используйте Power Query для предварительной обработки.
xlwings или использовать API Yandex Speller.
Text Analysis, который умеет группировать слова по основам. Минус — платная лицензия (~$50).
B перечислите все варианты: "яблоко", "яблока", "яблоку") и используйте:
=СЧЁТЕСЛИМн($A$1:$A$100; B1:B3)Как работает лемматизация?
5. Визуализация результатов: диаграммы частотности слов
A) — уникальные слова.B) — их количество.Вставка → Гистограмма.
Главная → Условное форматирование → Цветовые шкалы.6. Типичные ошибки и как их избежать
Ошибка
Причина
Решение
Формула возвращает #ЗНАЧ!
В тексте есть пустые ячейки или ошибки.
Используйте
=ЕСЛИОШИБКА(формула; 0).
Слова с разным регистром считаются отдельно.
ПОДСТАВИТЬ и НАЙТИ чувствительны к регистру.Приведите текст к нижнему регистру (
НИЖН.РЕГ).
Формула не считает слова с дефисами ("что-то").
ТЕКСТРАЗД разбивает текст только по пробелам.Замените дефисы на пробелы предварительно.
Макрос не работает в Excel Online.
VBA не поддерживается в веб-версии.
Используйте формулы или Power Query.
ТЕКСТРАЗД) могут некорректно обрабатывать русские символы. Решение: измените языковые настройки книги на Русский (Россия) в Файл → Параметры → Язык.
7. Продвинутые техники: регулярные выражения и Python
=REGEX.REPLACE).xlwings (пример кода ниже).import re
Text Analytics для лемматизации.FAQ: Ответы на частые вопросы
Можно ли посчитать слова в Excel без формул?
УНИК, которая упрощает задачу.Почему моя формула считает "Москва" и "москва" как разные слова?
НИЖН.РЕГ или ВЕРХН.РЕГ, чтобы привести текст к одному регистру.LCase перед сравнением: If LCase(word1) = LCase(word2) Then.Как посчитать слова в диапазоне ячеек, а не в одной?
A1:A10), сначала объедините их в одну строку:
=СЦЕПИТЬ(A1:A10; " ")ТЕКСТСЦЕП:
=ТЕКСТСЦЕП(" "; ИСТИНА; A1:A10)Можно ли автоматически обновлять подсчёт при изменении данных?
Обновить или при открытии файла.Worksheet_Change, чтобы он срабатывал при редактировании ячеек.Какая максимальная длина текста, с которой справится Excel?