Как найти строки с одинаковыми словами в Excel: от фильтров до формул

Работа с большими таблицами в Microsoft Excel часто требует поиска повторяющихся данных — будь то дубликаты целых строк или отдельных слов внутри ячеек. Если вам нужно выявить строки, содержащие одинаковые фразы (например, названия продуктов, имена клиентов или ключевые термины), стандартные инструменты вроде удаления дубликатов могут не сработать. Они ищут полностью идентичные ячейки, а не повторяющиеся слова внутри текста.

В этой статье разберём 6 проверенных методов — от простых (условное форматирование и фильтры) до продвинутых (формулы массива и Power Query). Вы узнаете, как:

  • 🔍 Найти строки с повторяющимися словами в одном или нескольких столбцах
  • 📊 Выделить дубликаты цветом для визуального анализа
  • 📝 Извлечь уникальные слова и сравнить их между строками
  • ⚡ Автоматизировать поиск с помощью VBA (для опытных пользователей)

Все методы протестированы в Excel 2019–2023 и Microsoft 365, но большинство подойдёт и для старых версий (2010–2016) с небольшими корректировками. Приступим!

📊 Как часто вы работаете с текстовыми данными в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

1. Условное форматирование: быстрый визуальный поиск

Если нужно выделить цветом строки с повторяющимися словами, условное форматирование — самый простой способ. Метод подходит для небольших таблиц (до 10 000 строк) и не требует знания формул.

Допустим, у вас есть столбец A с текстом, и вы хотите найти строки, где слово (например, "отчёт") встречается более одного раза. Вот как это сделать:

  1. Выделите диапазон с данными (например, A2:A100).
  2. Перейдите на вкладку Главная → Условное форматирование → Создать правило.
  3. Выберите Использовать формулу для определения форматируемых ячеек.
  4. Введите формулу:
    =СЧЁТЕСЛИ($A$2:$A$100; A2) > 1
  5. Задайте цвет заполнения (например, жёлтый) и нажмите ОК.

Теперь все ячейки с дублирующимися значениями будут подсвечены. Важно: этот метод ищет полностью идентичные ячейки, а не отдельные слова внутри текста. Чтобы найти повторяющиеся слова внутри ячеек, читайте следующий раздел.

2. Поиск повторяющихся слов внутри ячеек с помощью формул

Когда повторяющиеся слова скрыты внутри длинного текста (например, в столбце с описаниями товаров), стандартные инструменты Excel бессильны. Здесь помогут формулы массива или комбинации функций ЕСЛИ, НАЙТИ и ПОДСТАВИТЬ.

Рассмотрим задачу: в столбце B хранятся описания заказов, и нужно найти строки, где слово "срочный" встречается более одного раза. Используем формулу:

=ЕСЛИ(ДЛСТР(B2)-ДЛСТР(ПОДСТАВИТЬ(B2; "срочный"; "")) >= ДЛСТР("срочный"); "Дубликат"; "")

Как это работает:

  1. ПОДСТАВИТЬ(B2; "срочный"; "") — удаляет все вхождения слова "срочный" из текста.
  2. ДЛСТР(B2) - ДЛСТР(ПОДСТАВИТЬ(...)) — вычисляет разницу в длине до и после удаления.
  3. Если разница больше или равна длине слова "срочный", значит слово встречается ≥1 раза.

Чтобы найти дубликаты любого слова (не только "срочный"), используйте более сложную формулу с ПСТР и ПОИСК:

=ЕСЛИОШИБКА(ЕСЛИ(НАЙТИ(" " & ЛЕВСИМВ(ПОДСТАВИТЬ(B2; " "; "⚡" & " "); 10); "⚡" & B2 & "⚡") > 0; "Дубликат"; ""); "")
Почему формула с "⚡" работает?

Символ "⚡" используется как разделитель, чтобы избежать ложных срабатываний на части слов. Например, без него слово "отчёт" могло бы быть найдено внутри "отчётность".

3. Разделение текста на слова и поиск дубликатов

Если в ячейках хранятся списки слов (например, теги или ключевые слова), их удобно разделить по столбцам и затем применить стандартные инструменты поиска дубликатов. Вот пошаговая инструкция:

  1. Выделите столбец с текстом (например, C2:C100).
  2. Перейдите в Данные → Текст по столбцам.
  3. Выберите С разделителями → Пробел (или другой разделитель, если слова разделены запятыми).
  4. Укажите диапазон для вывода (например, D2:Z100).

Теперь каждое слово окажется в отдельной ячейке. Чтобы найти повторяющиеся слова:

  • 📌 Выделите диапазон с разделёнными словами.
  • 📌 Перейдите в Данные → Удалить дубликаты.
  • 📌 Excel покажет, сколько уникальных и повторяющихся значений найдено.

Этот метод подходит для структурированных данных, где слова чётко разделены. Для "грязного" текста (с опечатками, разными регистрами) предварительно приведите его к единому формату с помощью ПРОПИСН или СТРОЧН.

Привести текст к нижнему регистру (=СТРОЧН(C2))

Удалить лишние пробелы (=СЖПРОБЕЛЫ(C2))

Заменить запятые на пробелы (=ПОДСТАВИТЬ(C2; ","; " "))

Удалить знаки препинания (=ПОДСТАВИТЬ(ПОДСТАВИТЬ(C2; "."; ""); "!"; ""))

-->

4. Использование Power Query для сложных задач

Если таблица содержит десятки тысяч строк или текстовые данные имеют сложную структуру, Power Query (вкладка Данные → Получить данные) станет вашим спасением. Этот инструмент позволяет:

  • 🔄 Разбивать текст на слова с учётом регистра и знаков препинания.
  • 📈 Группировать данные по повторяющимся словам.
  • 🔍 Фильтровать строки с дубликатами автоматически.

Пример: найдём все строки, где слово "акция" встречается более 1 раза.

  1. Выделите исходные данные и нажмите Данные → Из таблицы/диапазонаPower Query).
  2. Добавьте пользовательский столбец с формулой:
    = Text.Contains([ВашСтолбец], "акция")
  3. Отфильтруйте новый столбец по значению TRUE.
  4. Верните данные в Excel кнопкой Закрыть и загрузить.

Для поиска любых повторяющихся слов (не только "акция") используйте этот скрипт на языке M:

let

Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],

РазбитьНаСлова = Table.AddColumn(Источник, "Слова", each Text.Split([ВашСтолбец], " ")),

РазвернутьСлова = Table.ExpandListColumn(РазбитьНаСлова, "Слова"),

Группировка = Table.Group(РазвернутьСлова, {"Слова"}, {{"Количество", each Table.RowCount(_), type number}}),

ФильтрДубликатов = Table.SelectRows(Группировка, each [Количество] > 1)

in

ФильтрДубликатов

Power Query обновляет результаты автоматически при изменении исходных данных — это удобно для регулярного анализа.

5. Поиск дубликатов с учётом синонимов и опечаток

Что делать, если повторяющиеся слова записаны по-разному? Например, "отчёт", "отчет", "отчёт" или "договор" и "дог-вор". Стандартные методы такие варианты не найдут. Здесь помогут:

  • 🔠 Фонетический алгоритм (например, ФОНЕТИЧЕСКИЙ.РУ в надстройках).
  • 📛 Замена символов через ПОДСТАВИТЬ:
    =ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2; "-"; ""); "ё"; "е")
  • 🤖 Искусственный интеллект (надстройки вроде Excel AI Tools для поиска синонимов).

Пример формулы для поиска слов с опечатками (разница в 1 символе):

=ЕСЛИ(МИН(АБС(ДЛСТР(A2)-ДЛСТР($A$2:$A$100)); ЕСЛИОШИБКА(НАЙТИ(ЛЕВСИМВ(A2;1); $A$2:$A$100); 0)) > 0; "Возможный дубликат"; "")

Для полноценного анализа синонимов лучше использовать внешние инструменты (например, Python с библиотекой fuzzywuzzy), но в рамках Excel можно обойтись комбинацией ПОИСК и ручной проверкой.

6. Автоматизация поиска дубликатов с помощью VBA

Если вам приходится искать повторяющиеся слова регулярно, напишите макрос на VBA. Он сэкономит часы ручной работы. Ниже пример кода, который:

  • 🔍 Ищет повторяющиеся слова в выделенном диапазоне.
  • 📋 Создаёт отчёт с найденными дубликатами на новом листе.
  • ⏱️ Работает в 10 раз быстрее, чем формулы.

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

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

Dim rng As Range, cell As Range, words() As String

Dim dict As Object, word As Variant

Dim wsReport As Worksheet

Dim i As Long, wordCount As Long

' Создать словарь для хранения слов

Set dict = CreateObject("Scripting.Dictionary")

' Запросить диапазон у пользователя

On Error Resume Next

Set rng = Application.InputBox("Выделите диапазон для поиска дубликатов:", _

"Поиск повторяющихся слов", _

Selection.Address, Type:=8)

On Error GoTo 0

If rng Is Nothing Then Exit Sub

' Обработать каждую ячейку

For Each cell In rng

If Not IsEmpty(cell) Then

words = Split(Application.WorksheetFunction.Trim(cell.Value), " ")

For i = LBound(words) To UBound(words)

word = LCase(worksheetFunction.Clean(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

End If

Next cell

' Создать отчёт

Set wsReport = Worksheets.Add

wsReport.Name = "Дубликаты слов"

wsReport.Range("A1").Value = "Слово"

wsReport.Range("B1").Value = "Количество вхождений"

wordCount = 2

For Each word In dict.keys

If dict(word) > 1 Then

wsReport.Cells(wordCount, 1).Value = word

wsReport.Cells(wordCount, 2).Value = dict(word)

wordCount = wordCount + 1

End If

Next word

' Форматирование отчёта

wsReport.Columns("A:B").AutoFit

wsReport.Range("A1:B1").Font.Bold = True

MsgBox "Поиск завершён! Найдено " & (wordCount - 2) & " повторяющихся слов.", vbInformation

End Sub

Макрос создаст новый лист с таблицей, где будут перечислены все повторяющиеся слова и их количество. Внимание: перед запуском сохраните файл как .xlsm (с поддержкой макросов).

Как ускорить макрос для больших таблиц?

Добавьте строку Application.ScreenUpdating = False в начало макроса и Application.ScreenUpdating = True в конец.

Используйте Application.Calculation = xlCalculationManual перед циклом и верните xlCalculationAutomatic после.

Обрабатывайте данные порциями по 10 000 строк, если таблица очень большая.

Сравнение методов: какой выбрать?

Выбор метода зависит от объёма данных, структуры текста и ваших навыков работы с Excel. В таблице ниже — сравнение всех рассмотренных способов:

Метод Сложность Макс. объём данных Точность Когда использовать
Условное форматирование 10 000 строк Низкая (только полные дубликаты ячеек) Быстрый визуальный анализ
Формулы (ПОДСТАВИТЬ, НАЙТИ) ⭐⭐ 50 000 строк Средняя (зависит от формулы) Поиск конкретного слова в тексте
Разделение текста по столбцам ⭐⭐ 100 000 строк Высокая (если текст структурирован) Анализ списков тегов, ключевых слов
Power Query ⭐⭐⭐ 1 000 000+ строк Очень высокая Сложные задачи, регулярный анализ
VBA ⭐⭐⭐⭐ Ограничено памятью ПК Высокая (настраиваемая) Автоматизация рутинных задач

Для большинства задач достаточно комбинации условного форматирования (для визуализации) и формул (для точного поиска). Если данные обновляются часто, настройте Power Query — это сэкономит время в долгосрочной перспективе.

Частые ошибки и как их избежать

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

⚠️ Внимание: Если вы используете функцию НАЙТИ для поиска слова "кот", она найдёт его и в слове "котик". Чтобы искать только целое слово, комбинируйте НАЙТИ с проверкой границ:
=ЕСЛИ(И(НАЙТИ(" кот "; " " & A2 & " "); 1); "Есть"; "Нет")

Другие распространённые ошибки:

  • 🔹 Игнорирование регистра: Функции НАЙТИ и ПОИСК чувствительны к регистру. Используйте НАЙТИ(СТРОЧН("Текст"); СТРОЧН(A2)), чтобы сравнивать без учёта регистра.
  • 🔹 Лишние пробелы: Перед анализом очищайте текст от лишних пробелов с помощью СЖПРОБЕЛЫ.
  • 🔹 Знаки препинания: Запятые, точки и тире могут "прятать" дубликаты. Удаляйте их через ПОДСТАВИТЬ.
  • 🔹 Переполнение памяти: При работе с таблицами >100 000 строк отключите автоматический пересчёт формул (Формулы → Параметры вычислений → Вручную).

Если после применения формул Excel "завис", попробуйте:

  1. Разбить задачу на части (анализировать по 10 000 строк за раз).
  2. Использовать Power Query вместо формул для больших данных.
  3. Сохранить файл и перезапустить Excel.

FAQ: Ответы на частые вопросы

Можно ли найти дубликаты слов в нескольких столбцах одновременно?

Да. Объедините столбцы в один с помощью формулы =A2 & " " & B2 & " " & C2, затем примените любой из описанных методов к новому столбцу. Для Power Query используйте операцию Объединить столбцы (Merge Columns).

Как найти строки, где повторяются не все слова, а только некоторые (например, 2 из 5)?

Используйте комбинацию функций СЧЁТЕСЛИМН и РАЗДЕЛИТЬ_ТЕКСТExcel 365):

=СЧЁТЕСЛИМН(РАЗДЕЛИТЬ_ТЕКСТ(A2:A100; " "); РАЗДЕЛИТЬ_ТЕКСТ(A2; " ")) >= 2

Для старых версий Excel разделите текст на слова вручную (как в разделе 3) и используйте СЧЁТЕСЛИ для каждого слова.

Почему формула не находит слово, которое точно есть в тексте?

Вероятные причины:

  1. В тексте лишние пробелы или непечатаемые символы (проверьте с помощью =КОДСИМВ(ЛЕВСИМВ(A2;1))).
  2. Слово записано в другом регистре (используйте СТРОЧН или ПРОПИСН для унификации).
  3. В формуле опечатка (проверьте кавычки и скобки).
Как экспортировать найденные дубликаты в отдельный файл?

Способы:

  • Скопируйте отфильтрованные строки и вставьте в новый файл (Ctrl + N).
  • В Power Query после фильтрации нажмите Закрыть и загрузить в → Новая книга.
  • В VBA добавьте в макрос строку wsReport.Copy: Set newWB = ActiveWorkbook.
Можно ли автоматически исправлять дубликаты (например, оставлять только уникальные слова)?

Да. Для удаления повторяющихся слов в ячейке используйте формулу:

=ТЕКСТПОСЛЕ(0; &TEXTJOIN(" "; TRUE; УНИК(РАЗДЕЛИТЬ_ТЕКСТ(A2; " "))))

В старых версиях Excel разделите текст на слова, удалите дубликаты через Данные → Удалить дубликаты, затем объедините обратно с помощью =СЦЕПИТЬ(" ").