Как найти повторяющиеся слова в двух столбцах Excel: от простых формул до Power Query

Работа с большими массивами данных в Microsoft Excel часто требует поиска дубликатов — особенно когда нужно сравнить два столбца на наличие общих слов или фраз. Возможно, вы сверяете списки клиентов из разных баз, ищете пересечения в каталогах товаров или проверяете данные на корректность. Вручную такое сравнение займёт часы, а то и дни. К счастью, в Excel есть как минимум 7 способов автоматизировать этот процесс — от элементарных формул до продвинутых инструментов вроде Power Query.

Но здесь кроется подвох: не все методы одинаково эффективны. Например, функция ПОИСКПОЗ справится с точными совпадениями, но бессильна против частичных вхождений ("книга" vs "детская книга"). А условное форматирование визуально выделит дубли, но не даст их полного списка. В этой статье мы разберём каждый способ с нюансами, чтобы вы могли выбрать оптимальный под конкретную задачу. Особое внимание уделим поиску повторов с учётом регистра и пробелов — это частая причина ошибок при сравнении текстовых данных.

———

1. Базовый метод: функция ПОИСКПОЗ для точных совпадений

Если вам нужно найти полные дубликаты (когда слова в двух столбцах совпадают буква в букву), проще всего воспользоваться функцией ПОИСКПОЗ. Она возвращает позицию искомого элемента в массиве, что идеально подходит для проверки наличия значения из одного столбца в другом.

Допустим, у вас есть два столбца: A (список товаров в магазине) и B (список заказанных позиций). Чтобы узнать, какие товары из B уже есть в A, введите в ячейку C2 формулу:

=ЕСЛИ(ЕЧИСЛО(ПОИСКПОЗ(B2;A:A;0));"Дубликат";"Уникально")

Разберём синтаксис:

  • 🔍 ПОИСКПОЗ(B2;A:A;0) — ищет значение из B2 в столбце A. Параметр 0 означает поиск точного совпадения.
  • 📊 ЕЧИСЛО — проверяет, вернула ли ПОИСКПОЗ число (т.е. нашла совпадение) или ошибку #Н/Д (нет совпадений).
  • ЕСЛИ — выводит "Дубликат", если совпадение найдено, иначе "Уникально".

Протяните формулу на весь столбец C, и вы получите пометки о дублях. Минус метода: он не учитывает регистр ("Книга" ≠ "книга") и игнорирует пробелы (" слово" ≠ "слово").

2. Поиск частичных совпадений с функцией ПОИСК

Когда нужно найти не точные дубли, а вхождения одного слова в другое (например, "ноутбук" в "игровой ноутбук Asus"), на помощь придёт функция ПОИСК. Она проверяет, содержится ли одна текстовая строка внутри другой, и возвращает позицию первого символа вхождения.

Предположим, в столбце A у вас названия категорий ("Электроника", "Бытовая техника"), а в B — конкретные товары ("Смартфон Samsung", "Пылесос Dyson"). Чтобы найти все товары, относящиеся к категории "Электроника", используйте:

=ЕСЛИ(ЕЧИСЛО(ПОИСК(A2;B2));"Совпадает";"Не совпадает")

Важные нюансы:

  • 📌 ПОИСК чувствительна к регистру. Для поиска без учёта регистра используйте НАЙТИ (но она не поддерживает подстановочные знаки).
  • 🚫 Если искомое слово отсутствует, функция вернёт ошибку #ЗНАЧ!. ЕЧИСЛО помогает обработать её корректно.
  • ⚠️ Функция найдёт "кот" в "котик", но не наоборот. Порядок аргументов важен!
⚠️ Внимание: Если в данных есть пустые ячейки, добавьте проверку на них с помощью ЕПУСТО, иначе формула вернёт ложные срабатывания. Пример: =ЕСЛИ(ИЛИ(ЕПУСТО(A2);ЕПУСТО(B2));"";ЕСЛИ(ЕЧИСЛО(ПОИСК(A2;B2));"Да";"Нет")).

3. Условное форматирование для визуального выделения дублей

Когда нужно не просто найти повторяющиеся слова, а мгновенно их увидеть на листе, условное форматирование станет лучшим решением. Этот метод подсветит все ячейки с дублями выбранным цветом — например, красным или жёлтым.

Как настроить:

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

Теперь все ячейки в столбце B, значения которых встречаются в столбце A, будут подсвечены. Преимущество метода — наглядность, недостаток — отсутствие возможности экспортировать список дублей.

📊 Какой метод поиска дублей вы используете чаще?
Формулы (ПОИСКПОЗ, СЧЁТЕСЛИ)
Условное форматирование
Power Query
Вручную
Другой

4. Продвинутый подход: Power Query для сложных сравнений

Если вам нужно сравнить большие столбцы (тысячи строк) или учитывать дополнительные условия (например, игнорировать артикли типа "the", "a"), Power Query станет спасением. Этот инструмент позволяет объединять таблицы, фильтровать данные и применять сложные преобразования.

Пошаговая инструкция:

  1. Выделите оба столбца (например, A1:B1000) и нажмите Данные → Из таблицы/диапазонаExcel 2016+).
  2. В открывшемся редакторе Power Query выберите Главная → Объединить запросы → Объединить.
  3. Укажите первый столбец (Column1) и второй столбец (Column2), тип объединения — Внутреннее (оставит только совпадения).
  4. Нажмите ОК, затем Закрыть и загрузить. Результат появится на новом листе.

Power Query гибок: вы можете предварительно очистить данные (убрать пробелы, привести к нижнему регистру) или добавить дополнительные столбцы для анализа. Например, так можно найти дубли с учётом синонимов:

Как учитывать синонимы при поиске дублей?

1. Создайте отдельную таблицу с парами синонимов (например, "телефон" — "смартфон").

2. В Power Query объедините её с основными данными по ключевому слову.

3. Используйте Table.ReplaceValue для замены синонимов на канонические формы перед сравнением.

5. Формулы массива для поиска всех вхождений

Когда требуется не просто найти дубли, а перечислить все повторяющиеся слова из одного столбца в другом, на помощь придут формулы массива. Они позволяют обрабатывать данные группами, а не по одной ячейке.

Допустим, в столбце A у вас список ключевых слов, а в B — тексты объявлений. Чтобы в столбце C вывести все ключевые слова, найденные в каждом объявлении, используйте:

=ТЕКСТСОЕДИНИТЬ(", ";ИСТИНА;ЕСЛИ(ЕЧИСЛО(ПОИСК($A$2:$A$10;B2));$A$2:$A$10;""))

Эта формула:

  • 🔎 Проверяет каждое слово из A2:A10 на вхождение в ячейку B2.
  • 📋 Собирает все найденные слова в одну строку, разделяя их запятой.
  • ⚡ Вводится как формула массива: после ввода нажмите Ctrl+Shift+Enter (в новых версиях Excel это не требуется).

Пример результата: если в B2 текст "Купить ноутбук Asus в кредит", а в A есть слова "ноутбук" и "кредит", формула вернёт: ноутбук, кредит.

⚠️ Внимание: Формулы массива сильно нагружают Excel при работе с большими диапазонами (более 10 000 строк). Для таких случаев лучше использовать Power Query или VBA.

6. Поиск дублей с учётом регистра и пробелов

Один из самых коварных моментов при сравнении текстовых данных — учёт регистра и пробелов. Например, "Excel" и "excel" или " слово" и "слово" для Excel по умолчанию считаются разными значениями. Чтобы этого избежать, нужно нормализовать данные перед сравнением.

Способы нормализации:

Проблема Решение Формула
Разный регистр Привести к нижнему регистру =СТРОЧН(B2)
Лишние пробелы Удалить пробелы в начале/конце =СЖПРОБЕЛЫ(B2)
Множественные пробелы Зменить на одиночные =ПОДСТАВИТЬ(B2;" ":" ")
Спецсимволы Удалить все кроме букв и цифр =ПЕЧСИМВ(ПОДСТАВИТЬ(B2;CHAR(160);" "))

Пример комплексного решения: чтобы сравнить столбцы A и B без учёта регистра и пробелов, используйте:

=ЕСЛИ(СЧЁТЕСЛИ(СТРОЧН(СЖПРОБЕЛЫ($A$2:$A$100));СТРОЧН(СЖПРОБЕЛЫ(B2)));"Дубликат";"Уникально")

Привести текст к нижнему регистру|Удалить лишние пробелы|Заменить табуляции на запятые|Проверить на спецсимволы (например, неразрывные пробелы)

-->

7. Автоматизация с помощью VBA (для опытных пользователей)

Если вам нужно регулярно искать дубли в больших файлах, стоит автоматизировать процесс с помощью VBA. Макрос может не только находить повторяющиеся слова, но и:

  • 📁 Сохранять результаты в отдельный файл.
  • 📊 Строить сводные таблицы по дублям.
  • ⚡ Обрабатывать несколько листов одновременно.

Пример макроса для поиска дублей между столбцами A и B:

Sub FindDuplicates()

Dim ws As Worksheet

Dim lastRowA As Long, lastRowB As Long

Dim i As Long, j As Long

Dim dict As Object

Set dict = CreateObject("Scripting.Dictionary")

Set ws = ActiveSheet

lastRowA = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

lastRowB = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row

' Заполняем словарь значениями из столбца A

For i = 2 To lastRowA

dict(Trim(LCase(ws.Cells(i, 1).Value))) = 1

Next i

' Проверяем столбец B на наличие дублей

For j = 2 To lastRowB

If dict.exists(Trim(LCase(ws.Cells(j, 2).Value))) Then

ws.Cells(j, 3).Value = "Дубликат"

Else

ws.Cells(j, 3).Value = "Уникально"

End If

Next j

End Sub

Этот код:

  • Создаёт словарь (Dictionary) со всеми значениями из столбца A (приведёнными к нижнему регистру и без пробелов).
  • Проверяет каждое значение в столбце B на наличие в словаре.
  • Выводит результат в столбец C.

Чтобы запустить макрос, нажмите Alt+F11, вставьте код в модуль и выполните его через F5.

FAQ: Частые вопросы о поиске дублей в Excel

Можно ли найти дубли между двумя разными файлами Excel?

Да, для этого:

  1. Откройте оба файла.
  2. В основном файле используйте формулу =СЧЁТЕСЛИ([ВнешнийФайл.xlsx]Лист1!A:A;A2)>0 (указывайте полный путь к внешнему файлу).
  3. Или импортируйте данные из второго файла в Power Query и объедините таблицы.
Как найти дубли с учётом опечаток (например, "Ексель" vs "Эксель")?

Для поиска похожих слов используйте:

  • Функцию РАССТОЯНИЕExcel 2013+) для вычисления разницы между строками: =РАССТОЯНИЕ(A2;B2). Чем меньше значение, тем похоже слова.
  • Надстройку Fuzzy Lookup (бесплатная от Microsoft) для нечёткого поиска.
Почему ПОИСКПОЗ не находит слово, которое точно есть в столбце?

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

  • В ячейках есть непечатаемые символы (например, CHAR(160) — неразрывный пробел). Используйте =ПЕЧСИМВ(A2) для проверки.
  • Слова отличаются регистром или пробелами. Нормализуйте данные функциями СТРОЧН и СЖПРОБЕЛЫ.
  • В формуле указан неверный диапазон (например, A1:A10 вместо A1:A100).
Как выделить цветом только первые вхождения дублей?

Используйте условное форматирование с формулой:

=СЧЁТЕСЛИ($A$2:A2;A2)=1

Эта формула подсветит ячейку, только если значение встречается в столбце A впервые.

Можно ли найти дубли в Google Таблицах?

Да, все описанные методы работают и в Google Sheets, за исключением Power Query (там используется Query Language). Например, для поиска дублей между столбцами A и B используйте:

=ARRAYFORMULA(IF(COUNTIF(A:A; B2:B); "Дубликат"; ""))