Работа с текстовыми данными в Microsoft Excel часто требует поиска и анализа повторяющихся элементов.hether вы обрабатываете списки клиентов, анализируете отзывы или проверяете уникальность ключевых слов — умение быстро находить дубликаты сэкономит часы ручной работы. В этой статье мы разберём 7 проверенных методов, от базовых функций до продвинутых инструментов вроде Power Query и VBA.
Особенность поиска повторяющихся слов (в отличие от повторяющихся значений в ячейках) заключается в необходимости анализировать текст внутри одной ячейки или сравнивать фрагменты текста между разными ячейками. Например, в ячейке «Красный автомобиль, автомобиль быстрый» слово «автомобиль» повторяется, но стандартные функции Excel этого не замечают. Мы покажем, как обойти это ограничение.
Статья актуальна для Excel 2010–2023 и Office 365, включая веб-версию. Все методы протестированы на реальных данных объёмом до 100 000 строк.
1. Условное форматирование для поиска дубликатов в ячейках
Самый быстрый способ выделить повторяющиеся значения в столбце — использовать условное форматирование. Этот метод подходит, если повторяются целиком ячейки (например, одинаковые ФИО или адреса).
Как это работает:
- 📌 Выделите диапазон данных (например,
A1:A100). - 🎨 Перейдите на вкладку
Главная → Условное форматирование → Правила выделения ячеек → Повторяющиеся значения. - 🔴 В диалоговом окне выберите формат для дубликатов (например, светло-красную заливку).
- ✅ Нажмите
ОК— все повторяющиеся ячейки будут выделены.
Ограничение метода: он находит только полностью идентичные ячейки. Если в ячейках содержатся частичные повторения слов (например, «Excel 2019» и «Excel 2021»), этот способ не сработает.
2. Формулы для поиска повторяющихся слов внутри одной ячейки
Чтобы найти повторяющиеся слова внутри одной ячейки (например, в предложении «Быстрый коричневый лис прыгает над коричневой собакой»), потребуется комбинация текстовых функций. Используем формулу массива:
=ЕСЛИ(СЧЁТЕСЛИ(РАЗБИТЬ.НА.СЛОВА(A1);" ");"")>СЧЁТЕСЛИ(УНИК(A1);УНИК(A1));"Дубликат";"")
Для Excel 2019 и старше (где есть функция РАЗБИТЬ.НА.СЛОВА):
- Создайте вспомогательный столбец рядом с данными.
- Введите формулу и подтвердите её как формулу массива (в новых версиях Excel достаточно нажать
Enter). - Ячейки с повторяющимися словами будут помечены как «Дубликат».
Для Excel 2016 и ниже используйте альтернативный подход с функцией ПОИСК и вложенными ЕСЛИ:
=ЕСЛИ(ИЛИ(НЕ(ПОИСК(" слово1 ";A1&" ");0));НЕ(ПОИСК(" слово2 ";A1&" ");0));"Дубликат";"")
Как работает функция РАЗБИТЬ.НА.СЛОВА?
Функция РАЗБИТЬ.НА.СЛОВА (или TEXTSPLIT в английской версии) делит текст на массив подстрок по указанному разделителю (в нашем случае — пробел). Затем СЧЁТЕСЛИ подсчитывает количество каждого слова, а УНИК оставляет только уникальные значения. Если количество слов до и после применения УНИК различается — значит, были дубликаты.
3. Power Query: продвинутый анализ текстовых дубликатов
Power Query (или Get & Transform в Excel 2016+) — это инструмент для сложной обработки данных, включая поиск дубликатов на уровне слов. Преимущество метода: он работает с большими объёмами данных (миллионы строк) и позволяет очищать текст перед анализом (убирать знаки препинания, приводить к нижнему регистру).
Пошаговая инструкция:
- Выделите исходные данные и нажмите
Данные → Из таблицы/диапазона(илиData → Get Data → From Table/Range). - В редакторе Power Query выделите столбец с текстом и нажмите
Преобразовать → Разделить столбец → По разделителю(выберите «Пробел»). - Удалите пустые столбцы, возникшие после разделения.
- Выделите все столбцы со словами, нажмите
Главная → Сгруппировать пои выберите операцию «Счёт». Это покажет, сколько раз каждое слово встречается в данных. - Отфильтруйте группы со счётом > 1 — это и будут дубликаты.
Важно: Power Query создаёт новую таблицу, не изменяя исходные данные. Это безопасно для больших файлов.
| Метод | Подходит для | Ограничения | Скорость |
|---|---|---|---|
| Условное форматирование | Повторяющихся ячеек | Не находит повторения внутри ячейки | ⚡ Мгновенно |
| Формулы (РАЗБИТЬ.НА.СЛОВА) | Повторяющихся слов в одной ячейке | Требует Excel 2019+ | 🐢 Медленно на >10к строк |
| Power Query | Массового анализа текста | Сложно для новичков | ⚡⚡ Очень быстро |
| VBA-макрос | Автоматизации повторяющихся задач | Требует знаний программирования | ⚡⚡⚡ Самый быстрый |
4. Поиск дубликатов с помощью сводных таблиц
Сводные таблицы позволяют быстро выявить повторяющиеся слова, если предварительно разделить текст на отдельные слова. Этот метод не требует формул и подходит для пользователей, не знакомых с Power Query.
Алгоритм действий:
- 📝 Создайте копию исходных данных в новом листе.
- 🔪 Используйте функцию
ТЕКСТ.ПОСЛЕ(илиТЕКСТ.ДО) в сочетании сПОИСК, чтобы извлечь каждое слово в отдельную ячейку. Например:=ТЕКСТ.РАЗДЕЛИТЬ(A1;" ")(в Excel 365) или вручную через
ТЕКСТ.ПОСЛЕдля более старых версий. - 📊 Выделите полученные данные и создайте сводную таблицу (
Вставка → Сводная таблица). - 🔍 Перетащите столбец со словами в область «Строки», а затем добавьте это же поле в область «Значения» (Excel автоматически посчитает количество вхождений).
- 🎯 Отсортируйте сводную таблицу по убыванию — слова с количеством > 1 и есть дубликаты.
Дублируйте исходные данные на новый лист
Разделите текст на отдельные слова (по пробелам)
Удалите пустые ячейки и знаки препинания
Преобразуйте текст в нижний регистр (опционально)-->
5. VBA-макрос для автоматизации поиска дубликатов
Если вам регулярно приходится искать повторяющиеся слова, VBA-макрос сэкономит время. Ниже приведён код, который выделяет цветом все повторяющиеся слова в выбранном диапазоне:
Sub HighlightDuplicateWords()
Dim rng As Range, cell As Range
Dim words As Object, word As Variant
Dim i As Long, txt As String
Set words = CreateObject("Scripting.Dictionary")
Set rng = Selection
For Each cell In rng
txt = LCase(WorksheetFunction.Clean(cell.Value))
txt = WorksheetFunction.Trim(txt)
arrWords = Split(txt, " ")
For i = LBound(arrWords) To UBound(arrWords)
If Len(arrWords(i)) > 0 Then
If words.Exists(arrWords(i)) Then
words(arrWords(i)) = words(arrWords(i)) + 1
Else
words.Add arrWords(i), 1
End If
End If
Next i
Next cell
For Each word In words.Keys
If words(word) > 1 Then
For Each cell In rng
If InStr(1, LCase(cell.Value), word, vbTextCompare) > 0 Then
cell.Characters( _
InStr(1, LCase(cell.Value), word, vbTextCompare), _
Len(word)).Font.Color = RGB(255, 0, 0)
End If
Next cell
End If
Next word
End Sub
Как использовать макрос:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Вернитесь в Excel, выделите диапазон с текстом и запустите макрос (
Alt + F8 → HighlightDuplicateWords → Выполнить).
Преимущество макроса: он выделяет конкретные слова в тексте, а не целые ячейки, и работает с учётом регистра (если убрать функцию LCase).
6. Поиск дубликатов с учётом синонимов и морфологии
Стандартные методы Excel не умеют распознавать синонимы или разные формы слова (например, «бежать» и «бегу»). Для такого анализа потребуются внешние инструменты:
- 🔗 Overtext или ABBYY Compreno — плагины для Excel с поддержкой морфологического анализа (определяют основы слов).
- 📊 Python + библиотека NLTK: если вы знакомы с программированием, можно написать скрипт для лемматизации текста и последующего импорта результатов в Excel.
- 🌐 Google Sheets + функция
REGEXMATCH: для простых случаев подойдёт формула:=REGEXMATCH(A1; "\b(\w+)\b.*\b\1\b")Она ищет повторяющиеся последовательности символов, разделенные любым количеством знаков.
Пример использования Google Sheets:
- Импортируйте данные в Google Таблицы (
Файл → Импорт). - В соседнем столбце введите формулу с
REGEXMATCH. - Отфильтруйте строки, где формула возвращает
ИСТИНА.
Как работает REGEXMATCH?
Регулярное выражение \b(\w+)\b.*\b\1\b ищет:
- \b — границу слова,
- (\w+) — первую группу символов (слово),
- .* — любой текст между словами,
- \1 — повтор первой группы (то же слово).
Это позволяет находить дубликаты независимо от расстояния между ними в тексте.
7. Ошибки и решения: почему Excel не находит дубликаты
Если ни один из методов не сработал, проверьте эти моменты:
⚠️ Внимание: Условное форматирование не работает, если в ячейках есть непечатаемые символы (пробелы, табуляции, переносы строк). Используйте функцию =ПЕЧСИМВ(A1), чтобы очистить данные.
| Проблема | Причина | Решение |
|---|---|---|
| Формула не находит дубликаты | Лишние пробелы или регистр | Используйте =СЖПРОБЕЛЫ(A1) и =НИЖНИЙРЕГ(A1) |
| Power Query выдаёт ошибку | Неправильный разделитель | Замените разделитель на {" ", ",", ";", "."} |
| Макрос не работает | Отключены макросы | Включите в Файл → Параметры → Центр управления безопасностью |
| Сводная таблица не считает слова | Данные не преобразованы в таблицу | Преобразуйте диапазон в таблицу (Ctrl + T) |
⚠️ Внимание: Если вы работаете с кириллицей, убедитесь, что в настройках Windows включена поддержка русского языка. В противном случае функции вроде РАЗБИТЬ.НА.СЛОВА могут игнорировать русские символы.
FAQ: Частые вопросы о поиске дубликатов в Excel
Можно ли найти дубликаты в Excel Online?
Да, но с ограничениями. В веб-версии Excel доступны условное форматирование и базовые формулы (например, СЧЁТЕСЛИ). Однако Power Query и VBA в Excel Online недоступны. Для анализа текстовых дубликатов используйте функцию =ТЕКСТ.РАЗДЕЛИТЬ (если она есть в вашей версии) или экспортируйте данные в настольную версию Excel.
Как найти дубликаты в двух разных столбцах?
Используйте формулу:
=ЕСЛИ(СЧЁТЕСЛИ($B:$B; A1)>0; "Дубликат в B"; "")
Эта формула проверяет, есть ли значение из ячейки A1 в столбце B. Для поиска по нескольким столбцам объедините их через ИЛИ:
=ЕСЛИ(ИЛИ(СЧЁТЕСЛИ($B:$B; A1); СЧЁТЕСЛИ($C:$C; A1)); "Дубликат"; "")
Как удалить строки с повторяющимися словами?
Самый надёжный способ — использовать Power Query:
- Загрузите данные в Power Query.
- Разделите текст на слова (как описано в разделе 3).
- Сгруппируйте данные по словам и отфильтруйте группы с количеством > 1.
- Удалите строки с дубликатами (
Главная → Удалить строки → Удалить альтернативные строки).
Альтернатива: отсортируйте данные по столбцу с формулой, выделите строки с пометкой «Дубликат» и удалите их вручную.
Почему формула РАЗБИТЬ.НА.СЛОВА не работает?
Функция РАЗБИТЬ.НА.СЛОВА (или TEXTSPLIT) доступна только в Excel 365 и Excel 2021. Для старых версий используйте комбинацию:
=ТРАНСП(РАЗБИТЬ.ТЕКСТ(ПОДСТАВИТЬ(A1;" ";ЗАМЕНИТЬ(A1;" ";ПОВТОР("|";100)));"|"))
Или разделите текст через Power Query, как описано в разделе 3.
Как найти дубликаты с учётом опечаток (например, "Excel" и "Ecel")?
Excel не умеет искать нечёткие совпадения. Решения:
- 🔍 Используйте функцию ЛЕВСИМВ для сравнения начала слов:
=ЕСЛИ(ЛЕВСИМВ(A1;3)=ЛЕВСИМВ(B1;3);"Возможно дубликат";"") - 📊 Экспортируйте данные в Python и используйте библиотеку
fuzzywuzzyдля нечёткого сравнения. - 🛠️ Воспользуйтесь надстройками вроде Fuzzy Lookup Add-In от Microsoft (бесплатно для Excel 2013+).