Как в Excel найти похожие значения: от точных дубликатов до нечёткого поиска

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

Поиск похожих значений может означать разные вещи: точные дубликаты (полное совпадение ячеек), частичные совпадения (например, "Иванов" и "Иванов И.П.") или нечёткий поиск (с учётом опечаток типа "Макдоналдс" vs "Макдональдс"). В этой статье разберём все методы — от простых до продвинутых, включая функции, условное форматирование и Power Query. Вы узнаете, как адаптировать каждый способ под свои задачи и избежать типичных ошибок.

Если вы работаете с данными, где важна точность (например, финансовые отчёты), даже мелкие расхождения могут искажать результаты. С другой стороны, в маркетинговых базах иногда требуется найти "похожие" записи, несмотря на незначительные различия. Excel предлагает инструменты для обоих сценариев — главное знать, когда и как их применять.

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

1. Поиск точных дубликатов: простые способы

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

Самый быстрый способ — использовать команду Условное форматирование → Правила выделения ячеек → Повторяющиеся значения. Программа автоматически выделит цветом все дубликаты в выбранном диапазоне. Этот метод подходит для визуального анализа, но не позволяет редактировать или удалять найденные совпадения.

Для более гибкой работы используйте функцию =СЧЁТЕСЛИ(). Например, формула =СЧЁТЕСЛИ($A$1:$A$100; A1)>1 вернёт ИСТИНА, если значение из ячейки A1 встречается в диапазоне A1:A100 более одного раза. Этот подход удобен для создания фильтров или дополнительных столбцов с пометками.

  • Плюсы: быстро, не требует сложных формул, визуально наглядно.
  • Минусы: не находит частичные совпадения, не работает с опечатками.
  • 🔄 Альтернатива: для удаления дубликатов используйте Данные → Удалить дубликаты.
⚠️ Внимание: При поиске дубликатов в текстовом формате Excel учитывает регистр. Например, "Иванов" и "иванов" будут считаться разными значениями. Чтобы игнорировать регистр, используйте функцию =СЧЁТЕСЛИ(диапазон; ВЕРХНИЙ(ячейка)).

2. Частичные совпадения: функции ПОИСКПОЗ и ВПР

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

Функция =ПОИСКПОЗ("искомая_подстрока"; диапазон; 0) вернёт позицию первого совпадения. Например, =ПОИСКПОЗ("ов"; A1:A10; 0) найдёт все ячейки, содержащие "ов". Для нечёткого поиска (с учётом опечаток) добавьте подстановочный знак *:

=ПОИСКПОЗ(""&"иван"&""; A1:A10; 0)

Эта формула найдёт "Иванов", "Иванченко", "Иванушкин" и т.д.

ВПР (VLOOKUP) полезна, когда нужно не только найти совпадение, но и получить данные из другой колонки. Например, чтобы по части наименования товара вытащить его цену:

=ВПР(""&"ноутбук"&""; A1:B100; 2; ЛОЖЬ)

Здесь A1:B100 — диапазон с наименованиями и ценами, а 2 — номер столбца с ценой.

Используйте * для обозначения любых символов до/после искомого текста

Проверьте регистр — Excel чувствителен к нему по умолчанию

Для поиска в нескольких колонках объедините их в один столбец функцией =СЦЕПИТЬ()

Сортируйте данные перед использованием ВПР для ускорения работы-->

ФункцияСинтаксисПример использованияКогда применять
ПОИСКПОЗ=ПОИСКПОЗ(искомое; диапазон; [тип_совпадения])=ПОИСКПОЗ(""&"ов"&""; A1:A100; 0)Поиск позиции частичного совпадения
ВПР=ВПР(искомое; диапазон; номер_столбца; [интервальный_просмотр])=ВПР(""&"ноут"&""; A1:B100; 2; ЛОЖЬ)Поиск + извлечение данных из другой колонки
НАЙТИ=НАЙТИ(подстрока; текст; [начальная_позиция])=НАЙТИ("ов"; A1)Проверка наличия подстроки (с учётом регистра)

3. Нечёткий поиск: функция ПОХОЖ и надстройка Fuzzy Lookup

Если в данных много опечаток или нестандартных записей (например, "Макдоналдс", "Макдональдс", "Мак-Доналдс"), обычные функции не помогут. Здесь нужен нечёткий поиск — сравнение строк с допуском на расхождения.

В Excel 365 и 2021 появилась функция =ПОХОЖ(), которая возвращает степень схожести двух текстов от 0 до 1. Например:

=ПОХОЖ("Макдоналдс"; "Макдональдс")

вернёт значение около 0,92, что означает 92% совпадения. На основе этого можно строить условное форматирование или фильтры:

=ЕСЛИ(ПОХОЖ(A1; "эталон"); "Совпадает"; "Не совпадает")

Для более сложных задач (например, сравнение тысяч строк) используйте надстройку Fuzzy Lookup из пакета Power Query:

  1. Перейдите в Данные → Получить данные → Из файла → Из Excel.
  2. Загрузите таблицу в Power Query.
  3. Выберите Домашняя → Объединить запросы → Нечёткое объединение.
  4. Настройте порог схожести (например, 80%).
⚠️ Внимание: Функция ПОХОЖ() доступна только в последних версиях Excel (2021+). Для Excel 2016 и старше потребуется VBA-скрипт или надстройка. Также учтите, что нечёткий поиск значительно увеличивает время обработки больших таблиц (от 10 000 строк).
Как работает алгоритм нечёткого поиска?

Алгоритм сравнивает строки по нескольким критериям:

1. Расстояние Левенштейна — количество операций (замена, удаление, вставка символов), необходимых для превращения одной строки в другую.

2. N-граммы — сравнение общих подстрок длиной N символов (например, "Ма", "ак", "kd" для "Макдоналдс").

3. Фонетическое сравнение — учёт звучания слов (полезно для имён, где опечатки не меняют произношения, например "Сергей" vs "Сергей").

Пороговое значение (например, 0.8) определяет, какие совпадения считать "похожими".

4. Условное форматирование для визуализации совпадений

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

Для поиска дубликатов:

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

Для частичных совпадений используйте формулу с ПОИСК или НАЙТИ:

=НЕ(ЕОШИБКА(ПОИСК("ов"; A1)))

Эта формула выделит все ячейки, содержащие "ов".

Для нечёткого поиска (Excel 2021+):

=ПОХОЖ(A1; $B$1)>0,8

где $B$1 — ячейка с эталонным значением.

5. Power Query: продвинутый поиск и очистка данных

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

Алгоритм работы:

  1. Импортируйте данные в Power Query через Данные → Получить данные.
  2. Выберите колонку, в которой нужно искать совпадения.
  3. Перейдите во вкладку Домашняя → Группировка.
  4. Сгруппируйте данные по выбранной колонке с операцией Счёт.
  5. Отфильтруйте группы, где счёт > 1 (это дубликаты).

Для нечёткого поиска:

  1. Используйте Объединить запросы → Нечёткое объединение.
  2. Выберите ключевые колонки для сравнения.
  3. Настройте порог схожести (рекомендуется 0.7–0.9).
  4. Просмотрите результаты и примите/отклоните предложенные совпадения.

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

ЗадачаИнструмент Power QueryПреимущества
Поиск точных дубликатовГруппировка по колонкеБыстро, визуально наглядно, сохраняет шаги
Нечёткий поискНечёткое объединениеНастраиваемый порог схожести, обработка больших объёмов
Очистка данныхЗамена значений, удаление пробеловАвтоматизация рутинных операций
Сравнение таблицОбъединение запросовПоиск расхождений между двумя наборами данных

6. VBA-скрипты для автоматизации поиска

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

Пример скрипта для поиска дубликатов с учётом опечаток (расстояние Левенштейна):

Function LevenshteinDistance(s1 As String, s2 As String) As Integer

' Функция вычисляет расстояние Левенштейна между двумя строками

Dim i As Integer, j As Integer

Dim cost As Integer

Dim d() As Integer

ReDim d(0 To Len(s1), 0 To Len(s2))

For i = 0 To Len(s1)

d(i, 0) = i

Next

For j = 0 To Len(s2)

d(0, j) = j

Next

For i = 1 To Len(s1)

For j = 1 To Len(s2)

If Mid(s1, i, 1) = Mid(s2, j, 1) Then

cost = 0

Else

cost = 1

End If

d(i, j) = Application.WorksheetFunction.Min( _

d(i - 1, j) + 1, _

d(i, j - 1) + 1, _

d(i - 1, j - 1) + cost)

Next

Next

LevenshteinDistance = d(Len(s1), Len(s2))

End Function

Sub FindSimilar()

Dim rng As Range, cell As Range

Dim dist As Integer

Dim threshold As Integer: threshold = 2 ' Порог расстояния

Set rng = Selection

For Each cell In rng

If cell.Row > 1 Then ' Пропускаем заголовок

dist = LevenshteinDistance(cell.Value, cell.Offset(-1, 0).Value)

If dist <= threshold Then

cell.Interior.Color = RGB(255, 200, 200) ' Выделяем цветом

End If

End If

Next cell

End Sub

Этот скрипт сравнивает каждую строку с предыдущей и выделяет цветом те, что отличаются не более чем на 2 символа (порог threshold можно изменить). Чтобы запустить макрос:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль.
  3. Вернитесь в Excel, выделите диапазон и запустите макрос через Вид → Макросы → FindSimilar.
⚠️ Внимание: Макросы могут содержать вредоносный код. Запускайте только скрипты из проверенных источников. Перед первым запуском сохраните файл в формате .xlsm (с поддержкой макросов) и включите их выполнение в Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов.

7. Практический кейс: очистка базы клиентов от дубликатов

Рассмотрим реальную задачу: у вас есть таблица с 5 000 записей клиентов, где одни и те же люди могут быть внесены несколько раз с опечатками. Например:

  • "Иванов Иван Петрович"
  • "Иванов И.П."
  • "Иванов Иван Петрович (ООО Ромашка)"

Цель — найти и объединить такие записи.

Алгоритм решения:

  1. Нормализуйте данные: приведите все ФИО к единому формату (например, "Фамилия И.О.") с помощью формул =ЛЕВСИМВ() и =ПСТР().
  2. Добавьте столбец с хэшем: создайте уникальный идентификатор для каждой записи, объединив фамилию, имя и отчество (или их части) через =СЦЕПИТЬ().
  3. Используйте Power Query:
    • Загрузите данные в Power Query.
    • Примените нечёткое объединение по столбцу с хэшем (порог 0.85).
    • Экспортируйте результаты обратно в Excel.
  • Проверьте вручную: некоторые совпадения могут быть ложными (например, полные тёзки).
  • Пример формулы для нормализации ФИО:

    =ПСТР(A1; 1; ПОИСК(" "; A1)) & " " & ЛЕВСИМВ(ПСТР(A1; ПОИСК(" "; A1)+1; 1)) & "." & ЛЕВСИМВ(ПРАВСИМВ(A1; 1)) & "."

    Эта формула преобразует "Иванов Иван Петрович" в "Иванов И.П.".

    FAQ: Частые вопросы о поиске похожих значений

    Как найти дубликаты в двух разных таблицах?

    Используйте функцию ВПР или ПОИСКПОЗ с диапазоном второй таблицы. Например:

    =ЕСЛИОШИБКА(ПОИСКПОЗ(A1; Лист2!A:A; 0); "Уникально"; "Дубликат")

    Для нечёткого сравнения импортируйте обе таблицы в Power Query и примените нечёткое объединение.

    Можно ли искать похожие значения по нескольким столбцам одновременно?

    Да. Создайте дополнительный столбец с конкатенацией (объединением) значений:

    =СЦЕПИТЬ(A1; "|"; B1; "|"; C1)

    Затем ищите дубликаты по этому столбцу. В Power Query используйте объединение по нескольким ключевым колонкам.

    Почему функция ПОХОЖ возвращает ошибку #ИМЯ?

    Эта функция доступна только в Excel 2021 и новее (или Excel 365). Для старых версий:

    • Используйте надстройку Fuzzy Lookup из Power Query.
    • Напишите VBA-функцию на основе расстояния Левенштейна (пример есть в разделе про макросы).
    • Обновите Excel до последней версии.

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

    Выделите диапазон → Данные → Удалить дубликаты. Если нужно оставить последнее вхождение (а не первое), предварительно отсортируйте данные по убыванию. Для нечётких дубликатов используйте Power Query:

    1. Группируйте данные по ключевому столбцу.
    2. Оставляйте только первую строку в каждой группе.

    Можно ли искать похожие значения по звучанию (например, "Сергей" и "Сергей")?

    Excel не имеет встроенной фонетической функции, но можно:

    • Использовать надстройки типа Fuzzy Lookup (они учитывают звучание).
    • Написать VBA-скрипт с алгоритмом Soundex или Metaphone.
    • Экспортировать данные в Python и применить библиотеку fuzzy.

    Пример кода для Soundex на VBA:

    Function Soundex(s As String) As String
    

    ' Упрощённая реализация алгоритма Soundex

    Dim code As String, prev As String, c As String

    Dim i As Integer, pos As Integer

    code = Left(UCase(s), 1)

    For i = 2 To Len(s)

    c = UCase(Mid(s, i, 1))

    Select Case c

    Case "B", "F", "P", "V": c = "1"

    Case "C", "G", "J", "K", "Q", "S", "X", "Z": c = "2"

    Case "D", "T": c = "3"

    Case "L": c = "4"

    Case "M", "N": c = "5"

    Case "R": c = "6"

    Case Else: c = ""

    End Select

    If c <> "" And c <> prev Then

    code = code & c

    If Len(code) = 4 Then Exit For

    End If

    prev = c

    Next

    Soundex = Left(code & "0000", 4)

    End Function