Как найти совпадения между двумя таблицами в Excel: 7 проверенных методов

Сравнение двух таблиц на совпадения в Microsoft Excel — одна из самых востребованных задач при работе с большими массивами данных. Например, вам нужно найти общие клиенты в двух базах, проверить дубликаты заказов или сопоставить списки товаров из разных поставщиков. Если просто визуально просматривать тысячи строк, можно упустить критичные несовпадения или, наоборот, не заметить важные совпадения. В 90% случаев проблема решается стандартными функциями ВПР, ПОИСКПОЗ или инструментом Условное форматирование, но есть и менее очевидные способы — от Power Query до макросов VBA.

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

1. Быстрый поиск совпадений с помощью функции ВПР

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

Формула имеет синтаксис:

=ВПР(искомое_значение; таблица_для_поиска; номер_столбца; [интервальный_просмотр])

Чтобы найти совпадения между двумя столбцами (например, списками email), используйте конструкцию:

=ЕСЛИ(НЕ(ЕОШИБКА(ВПР(A2; B:B; 1; ЛОЖЬ))); "Есть совпадение"; "Нет совпадения")
  • 📌 Плюсы: работает во всех версиях Excel, не требует дополнительных надстроек.
  • ⚠️ Минусы: чувствительна к формату данных (текст ≠ число), не находит совпадения, если искомое значение не в первом столбце таблицы.
  • 🔄 Альтернатива: для поиска в любом столбце используйте комбинацию ИНДЕКС + ПОИСКПОЗ.
⚠️ Внимание: Если в таблице-приёмнике есть пустые ячейки, ВПР вернёт ошибку #Н/Д. Чтобы избежать этого, оберните формулу в ЕСЛИОШИБКА:
=ЕСЛИОШИБКА(ВПР(A2; B:B; 1; ЛОЖЬ); ""; "Совпадает")

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

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

Алгоритм действий:

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

    (где B:B — столбец для сравнения, A1 — первая ячейка выделенного диапазона).

  5. Задайте цвет заполнения (например, зелёный для совпадений) и нажмите ОК.

Для обратной задачи (выделения уникальных значений) используйте формулу:

=СЧЁТЕСЛИ(B:B; A1)=0

3. Функция СЧЁТЕСЛИ для подсчёта совпадений

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

Пример: подсчёт повторяющихся email в столбце A (основная база) и столбце B (новый список):

=СЧЁТЕСЛИ(A:A; B2)

Чтобы вывести результат в виде "Есть"/"Нет", комбинируйте с ЕСЛИ:

=ЕСЛИ(СЧЁТЕСЛИ(A:A; B2)>0; "Есть в базе"; "Нового клиента")
ФункцияСинтаксисПример использованияРезультат
СЧЁТЕСЛИ=СЧЁТЕСЛИ(диапазон; критерий)=СЧЁТЕСЛИ(A:A; "Иванов")Количество ячеек с фамилией "Иванов" в столбце A
СЧЁТЕСЛИМН=СЧЁТЕСЛИМН(диапазон1; критерий1; [диапазон2; критерий2]...)=СЧЁТЕСЛИМН(A:A; "Иванов"; B:B; ">1000")Количество клиентов с фамилией "Иванов" и суммой заказа >1000
ЕСЛИ + СЧЁТЕСЛИ=ЕСЛИ(СЧЁТЕСЛИ(...)>0; "Да"; "Нет")=ЕСЛИ(СЧЁТЕСЛИ(A:A; B2)>0; "Дубликат"; "")Пометка "Дубликат" для повторяющихся значений

Для сравнения по нескольким критериям (например, совпадение и фамилии, и телефона) используйте СЧЁТЕСЛИМН:

=СЧЁТЕСЛИМН(A:A; D2; B:B; E2)

где A:A — столбец с фамилиями в первой таблице, B:B — с телефонами, а D2 и E2 — ячейки с данными из второй таблицы.

📊 Какой метод сравнения таблиц вы используете чаще?
Функция ВПР
Условное форматирование
Power Query
Макросы VBA

4. Power Query: профессиональное сравнение больших таблиц

Если таблицы содержат десятки тысяч строк или требуется регулярно обновлять данные, стандартные функции Excel будут тормозить. В этом случае оптимально использовать надстройку Power Query (доступна в Excel 2016 и новее, а также в Excel for Microsoft 365). Она позволяет:

  • 🔄 Объединять таблицы по ключевым полям (аналог JOIN в SQL).
  • 🧹 Очищать данные от пробелов, регистровых различий и ошибок.
  • ⚡ Автоматически обновлять результаты при изменении исходных таблиц.

Пошаговая инструкция для поиска совпадений:

  1. Выделите первую таблицу → вкладка ДанныеИз таблицы/диапазона (в группе Получить и преобразовать данные).
  2. В открывшемся окне Power Query нажмите ГлавнаяОбъединить запросыОбъединить.
  3. Выберите вторую таблицу и укажите ключевые столбцы (например, ID клиента или Email).
  4. В разделе Тип объединения выберите Внутреннее (только совпадения) или Левое внешнее (все записи из первой таблицы + совпадения).
  5. Нажмите ОКЗакрыть и загрузить.

Критическое преимущество Power Query — обработка данных без формул, что в 10–100 раз ускоряет работу с большими файлами. Например, сравнение двух таблиц по 50 000 строк займёт секунды, тогда как ВПР может "зависнуть" на часы.

Как убрать регистровую чувствительность в Power Query?

В окне Power Query выделите столбец для сравнения → вкладка ПреобразованиеФорматРегистр → выберите НИЖНИЙ или ВЕРХНИЙ. После этого объедините таблицы по преобразованным столбцам.

5. Макросы VBA для автоматизации сравнения

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

Sub FindMatches()

Dim ws As Worksheet

Dim rng1 As Range, rng2 As Range, cell As Range

Dim matchColor As Long

Set ws = ActiveSheet

Set rng1 = ws.Range("A2:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row) ' Первый столбец

Set rng2 = ws.Range("B2:B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row) ' Второй столбец

matchColor = RGB(200, 230, 200) ' Светло-зелёный цвет

' Очистка предыдущего форматирования

rng1.Interior.ColorIndex = xlNone

rng2.Interior.ColorIndex = xlNone

' Поиск совпадений

For Each cell In rng1

If Not IsError(Application.Match(cell.Value, rng2, 0)) Then

cell.Interior.Color = matchColor

rng2.Cells(Application.Match(cell.Value, rng2, 0), 1).Interior.Color = matchColor

End If

Next cell

End Sub

Чтобы запустить макрос:

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

6. Сравнение с учётом частичных совпадений

Иногда требуется найти не точные совпадения, а частичные — например, когда в одной таблице указаны полные ФИО, а в другой только фамилии, или когда артикулы товаров отличаются постфиксами (например, AR-100 vs AR-100-BLUE). Для этого используйте:

  • 🔍 Функцию ПОИСК: ищет подстроку в тексте. Пример:
    =ЕСЛИ(НЕ(ЕОШИБКА(ПОИСК(B2; A2))); "Совпадает частично"; "")
  • 📏 Функцию ЛЕВСИМВ/ПРАВСИМВ: сравнивает начало или конец строк. Пример для первых 5 символов:
    =ЕСЛИ(ЛЕВСИМВ(A2; 5)=ЛЕВСИМВ(B2; 5); "Совпадает"; "")
  • 🎯 Регулярные выражения (через VBA): для сложных шаблонов (например, поиск email по домену).

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

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2; " "; ""); "-"; ""); "_"; "")

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

Удалите лишние пробелы функцией СЖПРОБЕЛЫ|Приведите текст к одному регистру (ПРОПИСН/СТРОЧН)|Проверьте форматы ячеек (текст vs число)|Удалите скрытые символы функцией ЧИСТ-->

7. Проверка на совпадения с учётом ошибок и опечаток

Реальные данные редко бывают идеальными: в одной таблице может быть опечатка в фамилии ("Иванов" vs "Ивановв"), а в другой — лишний пробел. Чтобы найти такие "почти совпадения", используйте:

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

    Если результат < 3, строкиlikely совпадают с опечаткой.

  • 🔠 Фонетический алгоритм (через VBA): функции Soundex или Metaphone сравнивают слова по звучанию (полезно для фамилий: "Смирнов" vs "Смирнофф").

Для автоматизации проверки создайте правило условного форматирования с формулой:

=И(РАССТОЯНИЕ($A2; B2)<3; РАССТОЯНИЕ($A2; B2)>0)

Оно выделит ячейки, где строки отличаются незначительно.

FAQ: Частые вопросы о сравнении таблиц в Excel

Как сравнить две таблицы, если они на разных листах?

Используйте в формулах трёхмерные ссылки. Например, для поиска значения из Лист1!A2 в столбце B на Лист2:

=СЧЁТЕСЛИ(Лист2!B:B; Лист1!A2)

Если имена листов содержат пробелы, оберните их в одинарные кавычки: =СЧЁТЕСЛИ('Новая база'!B:B; A2).

Почему ВПР не находит совпадения, хотя они есть?

Причины:

  1. Разные форматы ячеек (например, текст vs число). Преобразуйте данные функцией =ЗНАЧЕН(A2) или =ТЕКСТ(A2; "0").
  2. Лишние пробелы. Удалите их функцией =СЖПРОБЕЛЫ(A2).
  3. Регистр символов. Приведите текст к одному регистру: =СТРОЧН(A2).
  4. Скрытые символы (например, переносы строк). Используйте =ЧИСТ(A2).
Как вывести все совпадения в отдельный столбец?

Способ 1: через Power Query (см. раздел 4).

Способ 2: с помощью формулы массива (нажмите Ctrl + Shift + Enter):

=ЕСЛИОШИБКА(ИНДЕКС($A$2:$A$100; МАЛЬЧ(ЕСЛИ(СЧЁТЕСЛИ($B$2:$B$100; $A$2:$A$100)>0; СТРОКА($A$2:$A$100)-1))); "")

Эта формула вернёт первый совпадающий элемент. Чтобы вывести все, растяните её вниз.

Можно ли сравнить таблицы в Excel Online?

В веб-версии Excel доступны:

  • Функции ВПР, СЧЁТЕСЛИ, ЕСЛИ.
  • Условное форматирование (но без некоторых расширенных правил).

Недоступны:

  • Power Query.
  • Макросы VBA.
  • Некоторые функции (например, РАССТОЯНИЕ).
Как сравнить таблицы по нескольким столбцам одновременно?

Используйте функцию СЦЕПИТЬ (или ОБЪЕДИНИТЬ в новых версиях) для создания уникального ключа. Например, чтобы сравнить таблицы по фамилии (A) и телефону (B):

=СЧЁТЕСЛИ($D$2:$D$100; СЦЕПИТЬ(A2; "|"; B2))>0

где D2:D100 — столбец с объединёнными данными из второй таблицы (например, =СЦЕПИТЬ(F2; "|"; G2)). Разделитель "|" нужен, чтобы избежать ложных срабатываний (например, "Иванов8999" vs "Иванов8 999").