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

Почему сравнение таблиц в Excel — задача с подвохом

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

В этой статье мы разберём 5 методов сравнения — от элементарных (для таблиц до 100 строк) до профессиональных (для больших массивов данных с автоматизацией). Вы узнаете, как:

  • 🔍 Использовать условное форматирование для визуального выделения совпадений
  • 📊 Применять функции ВПР, ИНДЕКС+ПОИСКПОЗ и СЧЁТЕСЛИМН для точного анализа
  • ⚡ Автоматизировать процесс с помощью Power Query (без формул!)
  • 🛠️ Обрабатывать "грязные" данные (пробелы, регистр, опечатки)

Важно: методы подходят для Excel 2010–2023 и Excel Online, но в старых версиях (2007 и ранее) часть функций может отсутствовать. Для MacOS инструкции актуальны, но горячие клавиши могут отличаться.

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

Метод 1: Условное форматирование — быстрый визуальный анализ

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

Алгоритм:

  1. Добавьте пустой столбец справа от первой таблицы (например, столбец D).
  2. В первой ячейке нового столбца (например, D2) введите формулу:
    =СЧЁТЕСЛИ(Sheet2!A:A; A2)>0

    где Sheet2!A:A — столбец с данными во второй таблице, а A2 — первая ячейка сравниваемого столбца.

  3. Выделите диапазон с формулой и примените условное форматирование: Главная → Условное форматирование → Правила выделения ячеек → Больше → 0.

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

Данные таблицы 1 Формула Результат форматирования
Яблоко =СЧЁТЕСЛИ(Sheet2!A:A; A2) ✅ Совпадение найдено
Груша =СЧЁТЕСЛИ(Sheet2!A:A; A3)
Банан =СЧЁТЕСЛИ(Sheet2!A:A; A4) ✅ Совпадение найдено
⚠️ Внимание: Если во второй таблице есть пустые ячейки, формула СЧЁТЕСЛИ может давать ложные срабатывания. Перед сравнением очистите данные от пробелов функцией =СЖПРОБЕЛЫ().

Метод 2: Функция ВПР — поиск совпадений с выводом дополнительных данных

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

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

Решение:

  1. В таблице поставщика А добавьте столбец "Цена Б" и введите формулу:
    =ЕСЛИОШИБКА(ВПР(A2; Поставщик_B!A:B; 2; ЛОЖЬ); "Нет совпадения")

    где:

    • A2 — артикул из первой таблицы,
    • Поставщик_B!A:B — диапазон поиска (столбец с артикулами + столбец с ценами),
    • 2 — номер столбца с ценой во второй таблице,
    • ЛОЖЬ — точный поиск.
  • Протяните формулу вниз.
  • Добавьте ещё один столбец "Разница" с формулой:
    =ЕСЛИ(ISBLANK(B2); ""; B2-C2)

    где B2 — цена поставщика А, C2 — цена поставщика Б.

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

    1. В данных есть скрытые пробелы (используйте =СЖПРОБЕЛЫ()).

    2. Разный регистр (например, "Артикул1" vs "артикул1") — добавьте столбец с =ПРОПИСН() и сравнивайте его.

    3. Данные сохранены как текст/число — преобразуйте формат ячеек в Общий.

    Критическая ошибка: если во второй таблице дублируются артикулы, ВПР вернёт первое найденное значение, игнорируя остальные. В этом случае используйте ИНДЕКС+ПОИСКПОЗ (метод 3).

    Метод 3: ИНДЕКС + ПОИСКПОЗ — альтернатива ВПР для сложных данных

    Комбинация ИНДЕКС + ПОИСКПОЗ решает главную проблему ВПР — она не зависит от положения столбца (можно искать данные слева) и точнее обрабатывает дубли.

    Рассмотрим пример: у вас есть таблица с ФИО сотрудников и их отделами (лист Сотрудники) и таблица с ФИО и зарплатами (лист Зарплаты). Нужно сверить данные и найти несоответствия.

    Формула для поиска отдела по ФИО:

    =ИНДЕКС(Сотрудники!B:B; ПОИСКПОЗ([@ФИО]; Сотрудники!A:A; 0))

    Где:

    • [@ФИО] — текущее ФИО в таблице зарплат (используется структурированная ссылка),
    • Сотрудники!A:A — столбец с ФИО в первой таблице,
    • Сотрудники!B:B — столбец с отделами,
    • 0 — точный поиск.

    Чтобы избежать ошибок, оберните формулу в ЕСЛИОШИБКА:

    =ЕСЛИОШИБКА(ИНДЕКС(Сотрудники!B:B; ПОИСКПОЗ([@ФИО]; Сотрудники!A:A; 0)); "Нет совпадения")

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

    Метод 4: Power Query — сравнение больших таблиц без формул

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

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

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

    • 🚀 Обрабатывает миллионы строк без зависаний,
    • 🔄 Позволяет обновлять данные одним кликом (Данные → Обновить все),
    • 🛠️ Автоматически чистит данные (удаляет пробелы, исправляет форматы).
    ⚠️ Внимание: При объединении таблиц с одинаковыми названиями столбцов Power Query добавит суффиксы .1, .2. Переименуйте их до загрузки, чтобы не путаться.

    Метод 5: Сравнение с учётом неточных совпадений (фуззи-мэтчинг)

    Что делать, если данные в таблицах похожи, но не идентичны? Например:

    • "ООО Ромашка" vs "ООО Ромашка+" (дополнительный символ),
    • "Иванов Иван" vs "Иванов И.И." (сокращённое отчество),
    • "ул. Ленина, 15" vs "ул Ленина д.15" (разный формат адреса).

    Для таких случаев подходит нечёткий поиск (fuzzy matching). В Excel нет встроенной функции, но можно использовать:

    1. Функцию ПОДОБН (для простых шаблонов):
      =ЕСЛИ(НЕ(ПОДОБН(""&A2&""; Sheet2!A:A)); "Нет"; "Есть совпадение")

      Ищет вхождение текста из A2 в любой ячейке второго столбца.

    2. Надстройку Fuzzy Lookup (от Microsoft, бесплатно):
      • Скачайте с сайта Microsoft (ссылка),
      • Установите через Файл → Параметры → Надстройки → Управление: Надстройки Excel → Перейти.
  • Формулу расстояния Левенштейна (для оценки схожести):
    =LEVENSHTEIN(A2; B2)

    Чем меньше значение, тем ближе строки. Требует VBA-кода (см. спойлер).

  • Код функции LEVENSHTEIN для VBA

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

    Dim i As Integer, j As Integer

    Dim l1 As Integer, l2 As Integer

    Dim d() As Integer

    l1 = Len(s1): l2 = Len(s2)

    ReDim d(l1, l2)

    For i = 0 To l1: d(i, 0) = i: Next

    For j = 0 To l2: d(0, j) = j: Next

    For i = 1 To l1

    For j = 1 To l2

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

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

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

    d(i - 1, j - 1) + (Mid(s1, i, 1) <> Mid(s2, j, 1)))

    Next

    Next

    Levenshtein = d(l1, l2)

    End Function

    Чтобы использовать функцию, нажмите Alt+F11, вставьте код в модуль и сохраните. Теперь в Excel можно вызывать =LEVENSHTEIN(A2; B2).

    Типичные ошибки и как их избежать

    Даже опытные пользователи допускают ошибки при сравнении таблиц. Вот самые распространённые:

    Ошибка Причина Решение
    Формула не находит очевидные совпадения Скрытые пробелы или непечатаемые символы Используйте =СЖПРОБЕЛЫ() и =ПЕЧСИМВ()
    ВПР возвращает #Н/Д для существующих данных Разный формат ячеек (текст vs число) Преобразуйте оба столбца в Общий формат
    Power Query "не видит" данные Таблицы не преобразованы в Умную таблицу Выделите диапазон и нажмите Ctrl+T
    Медленная работа с большими таблицами Слишком много формул или условного форматирования Перейдите на Power Query или VBA

    Ещё одна ловушка — динамические диапазоны. Если вы ссылаетесь на весь столбец (A:A), Excel будет проверять все 1 млн строк, даже пустые. Оптимизируйте диапазоны:

    • 📌 Используйте Таблицы Excel (Ctrl+T), чтобы диапазоны расширялись автоматически,
    • 📌 Ограничивайте диапазон реальными данными: A2:A&СЧЁТЗ(A:A).

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

    2. Приведите к единому регистру (=ПРОПИСН()).

    3. Удалите непечатаемые символы (=ПЕЧСИМВ()).

    Это сократит количество ложных несовпадений на 80%!-->

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

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

    Да, но с ограничениями:

    • ✅ Работают ВПР, ИНДЕКС+ПОИСКПОЗ, условное форматирование,
    • ❌ Нет Power Query и надстройки Fuzzy Lookup,
    • ❌ Ограничение на размер файла (до 5 МБ в бесплатной версии).

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

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

    Используйте составной ключ:

    1. Добавьте вспомогательный столбец с формулой:
      =A2&"|"&B2&"|"&C2

      (где A2, B2, C2 — сравниваемые столбцы),

    2. Сравнивайте таблицы по этому столбцу любым из описанных методов.

    Для Power Query выберите несколько столбцов в окне объединения (зажмите Ctrl при выделении).

    Как автоматизировать сравнение, чтобы не повторять действия каждый раз?

    Варианты автоматизации:

    • 📥 Power Query: сохраните запрос и обновляйте данные кнопкой Обновить все,
    • 🤖 VBA-макрос: запишите действия через Разработчик → Запись макроса,
    • ⏱️ Автоматическое обновление: настройте Данные → Подключения → Свойства → Обновлять каждые X минут.

    Для VBA пример макроса, сравнивающего два диапазона:

    Sub CompareTables()
    

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

    Set rng1 = Sheets("Лист1").Range("A2:A100")

    Set rng2 = Sheets("Лист2").Range("A2:A100")

    For Each cell In rng1

    If WorksheetFunction.CountIf(rng2, cell.Value) > 0 Then

    cell.Offset(0, 1).Value = "Совпадение"

    End If

    Next cell

    End Sub

    Что делать, если таблицы в разных файлах?

    Способы сравнения:

    1. Ссылка на внешний файл:
      • Откройте оба файла,
      • В формуле укажите путь: =ВПР(A2; [Книга2.xlsx]Лист1!A:B; 2; ЛОЖЬ).
  • Power Query:
    • Импортируйте обе таблицы через Данные → Получить данные → Из файла,
    • Объедините запросы (см. Метод 4).
    • Копирование данных: скопируйте вторую таблицу в текущий файл на новый лист.

    ⚠️ Если файлы хранятся в OneDrive/SharePoint, используйте Данные → Получить данные → Из файла → Из OneDrive, чтобы избежать проблем с путями.

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

    Решение зависит от задачи:

    • 🔹 Если нужно сравнить только общие столбцы:
      • Выделите их в обеих таблицах,
      • Используйте Power Query для объединения только по этим столбцам.
    • 🔹 Если нужно найти совпадения по одному столбцу и вывести все данные:
      • Примените ВПР или ИНДЕКС+ПОИСКПОЗ для каждого столбца отдельно,
      • Или объедините таблицы в Power Query по ключевому столбцу.

    Пример формулы для подтягивания данных из второго столбца второй таблицы:

    =ЕСЛИОШИБКА(ИНДЕКС(Лист2!B:B; ПОИСКПОЗ(A2; Лист2!A:A; 0)); "")