Работа с текстовыми данными в Microsoft Excel часто требует анализа повторяющихся элементов — будь то имена клиентов в базе, категории товаров или ключевые слова в отчётах. Один из самых распространённых вопросов: как посчитать количество повторений конкретного слова в таблице, столбце или даже во всей книге? На первый взгляд задача кажется простой, но на практике пользователи сталкиваются с нюансами: регистр букв, частичные совпадения, пробелы или знаки препинания.
В этой статье мы разберём 5 проверенных методов — от базовых функций вроде СЧЁТЕСЛИ до продвинутых инструментов типа Power Query и VBA. Вы узнаете, как учитывать только точные совпадения, игнорировать регистр, анализировать текстовые строки с разделителями и даже автоматизировать процесс для больших массивов данных. Каждый способ проиллюстрирован реальными примерами из практики: обработка опросов, анализ логов чат-ботов и выявление дублей в каталогах.
Важно: если вы работаете с версиями Excel 365 или Excel 2021, у вас есть доступ к новым динамическим массивам и функциям вроде ТЕКСТРАЗД, которые упрощают задачу. Для старых версий (2010–2016) мы тоже подготовили рабочие альтернативы.
1. Базовый метод: функция СЧЁТЕСЛИ для точных совпадений
Начнём с самого простого — подсчёта точных повторений слова в одном столбце. Здесь на помощь придёт функция СЧЁТЕСЛИ (COUNTIF в английской версии). Она идеально подходит, если:
- 📌 Слова в ячейках не содержат лишних пробелов или знаков препинания.
- 📌 Вам нужно учитывать регистр (например, "Excel" и "excel" будут считаться разными словами).
- 📌 Данные расположены в одном столбце или строке.
Формула выглядит так:
=СЧЁТЕСЛИ(диапазон; "искомое_слово")
Пример: подсчитаем, сколько раз встречается слово "Да" в столбце A2:A100:
=СЧЁТЕСЛИ(A2:A100; "Да")
| Ячейка | Значение | Формула | Результат |
|---|---|---|---|
| A2 | Да | =СЧЁТЕСЛИ(A2:A6; "Да") |
3 |
| A3 | Нет | ||
| A4 | Да | ||
| A5 | да | ||
| A6 | Да |
⚠️ Внимание: ФункцияСЧЁТЕСЛИчувствительна к регистру! Чтобы игнорировать регистр, используйтеСЧЁТЕСЛИМНс дополнительным условием или комбинациюПОИСКПОЗ+ЧСТРОК(разберём ниже).
2. Подсчёт без учёта регистра: СЧЁТЕСЛИМН + ПРОПИСН
Если в ваших данных слово может быть написано в разном регистре (например, "Apple", "apple", "APPLE"), стандартная СЧЁТЕСЛИ не подойдёт. Решение — преобразовать все ячейки к одному регистру с помощью функции ПРОПИСН (UPPER) и использовать СЧЁТЕСЛИМН (COUNTIFS).
Формула:
=СЧЁТЕСЛИМН(диапазон; ">="&ПРОПИСН("слово"); диапазон; "<="&ПРОПИСН("слово"))
Пример для поиска слова "excel" в любом регистре:
=СЧЁТЕСЛИМН(A2:A100; ">="&ПРОПИСН("excel"); A2:A100; "<="&ПРОПИСН("excel"))
- 🔹 Работает в Excel 2007 и новее.
- 🔹 Подходит для диапазонов с текстовыми и числовыми данными.
- 🔹 Можно комбинировать с другими условиями (например, подсчитать "excel" только в ячейках, где в столбце B стоит "2026").
3. Поиск частичных совпадений: символы подстановки * и ?
Что делать, если нужно найти не точное слово, а его часть? Например, подсчитать все ячейки, содержащие "отчёт" (включая "ежедневный отчёт", "отчёт по продажам" и т.д.). Здесь помогут символы подстановки:
- 🌟
*— заменяет любое количество символов (включая ноль). - 🌟
?— заменяет ровно один символ.
Формула с СЧЁТЕСЛИ:
=СЧЁТЕСЛИ(диапазон; "слово")
Примеры:
=СЧЁТЕСЛИ(A2:A100; "отчёт")
=СЧЁТЕСЛИ(A2:A100; "???excel")
⚠️ Внимание: Символы подстановки не работают с функциейНАЙТИилиПОИСК! Для них используйтеПОИСКПОЗс параметром0для точного совпадения.
Как искать слова с учётом пробелов и знаков препинания?
Если слово может быть частью фразы (например, "Excel," или "Excel!"), используйте комбинацию:
=СУММПРОИЗВ(--НЕОШИБКА(ПОИСК(" excel "; " "&диапазон&" ")))
Эта формула ищет слово "excel" как отдельное слово, окружённое пробелами или знаками препинания.
4. Продвинутый подсчёт: ТЕКСТРАЗД + ЧАСТОТА (Excel 365/2021)
В новых версиях Excel появились динамические массивы, которые позволяют анализировать текстовые данные гораздо эффективнее. Например, функция ТЕКСТРАЗД (TEXTSPLIT) разбивает текст по разделителю, а ЧАСТОТА (FREQUENCY) подсчитывает повторения.
Допустим, у вас в ячейке A2 строка: "яблоко,банан,яблоко,груша". Чтобы посчитать количество каждого фрукта:
=ЧАСТОТА(ТЕКСТРАЗД(A2; ","); ТЕКСТРАЗД(A2; ","))
Для анализа целого столбца:
- Объедините все ячейки в одну строку с разделителем (например, через
ТЕКСТСЦЕП+ЗАМЕНИТЬ). - Примените
ТЕКСТРАЗДдля разбивки. - Используйте
ЧАСТОТАдля подсчёта.
Удалить лишние пробелы|Заменить разделители на единый символ (например, запятую)|Проверить отсутствие пустых ячеек|Объединить данные в одну строку (если нужно)
-->
| Исходные данные (A2:A5) | Формула | Результат |
|---|---|---|
| яблоко,банан | =УНИК(ТЕКСТРАЗД(ТЕКСТСЦЕП(A2:A5; ","); ","))=ЧАСТОТА(...) |
яблоко: 3 банан: 2 груша: 1 |
| груша,яблоко | ||
| банан,яблоко | ||
| банан |
5. Автоматизация: Power Query для больших массивов данных
Если вам нужно обработать тысячи строк или регулярно обновлять отчёты, ручные формулы станут тормозом. Power Query (доступен в Excel 2016 и новее) позволяет:
- 🔧 Разбивать текстовые столбцы по разделителям.
- 🔧 Группировать данные по значениям с подсчётом повторений.
- 🔧 Очищать данные от лишних пробелов и знаков препинания.
Пошаговая инструкция:
- Выделите исходные данные →
Данные → Из таблицы/диапазона(в Excel 2016 —Power Query → Из таблицы). - В редакторе Power Query выберите столбец с текстом →
Преобразовать → Разделить столбец → По разделителю(укажите запятую, точку с запятой и т.д.). - Выделите полученный столбец →
Преобразовать → Группировка→ укажитеСуммаилиКоличество значений. - Нажмите
Закрыть и загрузить.
Преимущества метода:
- ⚡ Обрабатывает миллионы строк без тормозов.
- ⚡ Сохраняет связь с исходными данными (обновляется автоматически).
- ⚡ Позволяет очищать данные на лету (удалять пробелы, приводить к нижнему регистру).
6. VBA-скрипт для гибкого поиска (для опытных пользователей)
Если вам нужно регулярно обрабатывать сложные текстовые данные (например, искать слова с учётом морфологии или анализировать PDF-экспорты), на помощь придёт VBA. Ниже скрипт, который подсчитывает повторения слова в выделенном диапазоне, игнорируя регистр и знаки препинания:
Sub CountWordOccurrences()
Dim rng As Range, cell As Range
Dim searchWord As String, count As Long
Dim regex As Object
' Создаём объект для работы с регулярными выражениями
Set regex = CreateObject("VBScript.RegExp")
regex.Global = True
regex.IgnoreCase = True ' Игнорируем регистр
' Запрашиваем слово для поиска
searchWord = InputBox("Введите слово для подсчёта:", "Поиск повторений")
If searchWord = "" Then Exit Sub
' Настраиваем шаблон (ищем слово как отдельную единицу)
regex.Pattern = "\b" & searchWord & "\b"
' Подсчёт в выделенном диапазоне
Set rng = Selection
count = 0
For Each cell In rng
If regex.Test(cell.Value) Then
count = count + regex.Execute(cell.Value).Count
End If
Next cell
MsgBox "Слово '" & searchWord & "' встречается " & count & " раз(а).", vbInformation
End Sub
Как использовать:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Выделите диапазон с данными в Excel и запустите макрос (
F5). - Введите искомое слово в появившемся окне.
⚠️ Внимание: Макрос ищет точные слова, игнорируя вхождения внутри других слов. Например, для слова "кот" он не посчитает "котик" или "котёнок". Чтобы включить частичные совпадения, удалите\bиз шаблонаregex.Pattern.
FAQ: Ответы на частые вопросы
Можно ли посчитать повторения слова в нескольких листах одновременно?
Да, но для этого нужно использовать 3D-ссылки или VBA. Пример формулы для листов Лист1 и Лист2:
=СЧЁТЕСЛИ(Лист1:Лист2!A2:A100; "слово")
Ограничение: все листы должны иметь одинаковую структуру данных.
Как подсчитать уникальные слова в тексте?
Используйте комбинацию УНИК + СТРОКА (в Excel 365):
=СТРОКА(УНИК(ТЕКСТРАЗД(ТЕКСТСЦЕП(A2:A100; " "); " ")))
Для старых версий подойдёт Power Query или VBA.
Почему СЧЁТЕСЛИ не считает слово, если в ячейке есть пробелы?
Функция СЧЁТЕСЛИ чувствительна к пробелам. Решения:
- Используйте
СЖПРОБЕЛЫ:=СЧЁТЕСЛИ(диапазон; СЖПРОБЕЛЫ(" слово ")). - Замените пробелы в данных заранее:
=ПОДСТАВИТЬ(A2; " "; "").
Как посчитать повторения слова в Google Sheets?
В Google Таблицах используйте те же функции, но с английскими названиями:
=COUNTIF(A2:A100; "word")
=ARRAYFORMULA(SUM(IF(REGEXMATCH(A2:A100; "\bword\b"); 1; 0)))
Можно ли автоматически выделять повторяющиеся слова?
Да, с помощью Условного форматирования:
- Выделите диапазон →
Главная → Условное форматирование → Создать правило. - Выберите
Использовать формулу...и введите: - Задайте цвет заполнения и нажмите
ОК.
=СЧЁТЕСЛИ($A$2:$A$100; A2)>1