Как сравнить две таблицы в Excel и перенести совпадения в третью — подробное руководство

Сравнение таблиц в Microsoft Excel — одна из самых востребованных задач при работе с данными. Чаще всего пользователям нужно найти общие строки между двумя списками и перенести их в отдельную таблицу для дальнейшего анализа. Например, вы можете сравнить списки клиентов из разных баз, выявить повторяющиеся товары в прайс-листах или сверить данные из разных отделов компании.

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

Если вы работаете с большими объёмами данных (тысячи строк), ручное сравнение просто невозможно. Даже функции вроде ВПР или ПОИСКПОЗ могут тормозить на объёмах свыше 50 000 строк. В таких случаях оптимально использовать Power Query — инструмент, который не нагружает сам файл Excel и обрабатывает данные на уровне движка. Но и для небольших таблиц есть простые решения — например, условное форматирование или сводные таблицы.

Важно понимать, что "совпадения" бывают разными:

  • 🔍 Полное совпадение строк — когда все ячейки в строке идентичны (например, ФИО + телефон + email).
  • 🔍 Частичное совпадение — когда совпадает только одно поле (например, только артикул товара).
  • 🔍 Приблизительное совпадение — когда данные похожи, но не идентичны (например, "Иванов И.А." vs "Иванов Иван").

В этой статье мы сфокусируемся на первых двух типах, так как они наиболее востребованы в бизнес-задачах. Для приблизительного поиска потребуются специальные функции вроде ПОХОЖ или регулярные выражения — это тема для отдельного руководства.

1. Сравнение таблиц с помощью функции ВПР (VLOOKUP)

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

Допустим, у вас есть две таблицы на одном листе:

  • 📊 Таблица 1 (диапазон A2:B10) — список клиентов с колонками "ФИО" и "Телефон".
  • 📊 Таблица 2 (диапазон D2:E15) — другой список клиентов с теми же колонками.

Чтобы найти совпадения по ФИО и скопировать их в третью таблицу, выполните следующие шаги:

  1. Создайте новую таблицу для результатов (например, начиная с ячейки G2).
  2. В ячейку G2 введите формулу:
    =ЕСЛИОШИБКА(ВПР(A2;D:E;2;ЛОЖЬ);"")

    Эта формула ищет значение из A2 (ФИО из первой таблицы) в первом столбце второй таблицы (D:E) и возвращает телефон из второго столбца. Если совпадения нет, выводится пустая строка.

  3. Растяните формулу вниз на весь диапазон первой таблицы.
  4. Отфильтруйте столбец с результатами, оставив только непустые строки — это и будут совпадения.

⚠️ Внимание: ВПР чувствительна к регистру и пробелам. Если в одной таблице написано "Иванов Иван", а в другой "ИВАНОВ ИВАН", функция не найдёт совпадение. Чтобы этого избежать, используйте функцию СЖПРОБЕЛЫ для очистки данных перед сравнением:

=ВПР(СЖПРОБЕЛЫ(A2);D:E;2;ЛОЖЬ)

Удалите лишние пробелы с помощью СЖПРОБЕЛЫ|

Приведите текст к одному регистру функцией ПРОПИСН или СТРОЧН|

Проверьте, что в обоих таблицах одинаковый порядок колонок|

Убедитесь, что нет скрытых символов (например, неразрывных пробелов)

-->

2. Использование функции ПОИСКПОЗ (MATCH) + ИНДЕКС (INDEX) для гибкого сравнения

Комбинация ПОИСКПОЗ + ИНДЕКС более универсальна, чем ВПР, потому что:

  • 🔹 Позволяет искать совпадения не только в первом столбце.
  • 🔹 Работает слева направо (в отличие от ВПР, которая всегда смотрит вправо).
  • 🔹 Меньше тормозит на больших объёмах данных.

Предположим, вам нужно сравнить две таблицы по колонке "Артикул" (столбец C в первой таблице и столбец F во второй). Формула для поиска совпадений будет такой:

=ЕСЛИОШИБКА(ИНДЕКС($F$2:$F$100;ПОИСКПОЗ(C2;$H$2:$H$100;0));"")

Где:

  • $F$2:$F$100 — диапазон с артикулами во второй таблице.
  • C2 — артикул из первой таблицы, который мы ищем.
  • $H$2:$H$100 — диапазон для поиска (должен совпадать с первым аргументом ИНДЕКС по высоте).

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

=ЕСЛИОШИБКА(ИНДЕКС($G$2:$G$100;ПОИСКПОЗ(C2;$H$2:$H$100;0));"")

💡 Полезный совет: Если вам нужно сравнить таблицы по нескольким критериям (например, по артикулу и цене), используйте функцию ИНДЕКС с массивом:

=ИНДЕКС($G$2:$G$100;ПОИСКПОЗ(1;($H$2:$H$100=C2)*($I$2:$I$100=D2);0))
Вводите эту формулу как формулу массива (нажмите Ctrl+Shift+Enter в старых версиях Excel).

Функция ВПР|

ПОИСКПОЗ + ИНДЕКС|

Условное форматирование|

Power Query|

Другой способ-->

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

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

Инструкция по настройке:

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

    Здесь $D$2:$D$100 — столбец из второй таблицы, по которому ищем совпадения с текущей ячейкой (A2).

  5. Задайте формат (например, зелёную заливку) и нажмите ОК.

Теперь все строки, которые есть в обеих таблицах, будут подсвечены. Чтобы скопировать их в новую таблицу:

  1. Отфильтруйте данные по цвету (нажмите на стрелочку фильтра → Фильтр по цвету ячейки).
  2. Скопируйте отфильтрованные строки и вставьте их на новый лист.

⚠️ Внимание: Условное форматирование работает только в пределах одного листа. Если ваши таблицы находятся на разных листах, используйте в формуле ссылки вида Лист2!$D$2:$D$100. Также помните, что этот метод выделяет только первые совпадения — если дубликатов несколько, они не будут отмечены.

Метод Плюсы Минусы Когда использовать
ВПР Простота, не требует дополнительных знаний Медленно работает на больших данных, только левый поиск Небольшие таблицы, простые совпадения по одному столбцу
ПОИСКПОЗ + ИНДЕКС Гибкость, работает в любом направлении Сложнее для новичков Средние таблицы, поиск по нескольким критериям
Условное форматирование Визуально наглядно, быстро настраивается Не копирует данные автоматически, только выделяет Быстрая визуальная проверка совпадений

4. Power Query: профессиональный инструмент для сравнения больших таблиц

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

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

  1. Выделите первую таблицу и нажмите Данные → Из таблицы/диапазона (если данные не в формате таблицы, сначала преобразуйте их в Ctrl+T).
  2. В открывшемся редакторе Power Query нажмите Главная → Объединить запросы → Объединить.
  3. Выберите вторую таблицу из выпадающего списка.
  4. Укажите столбцы для сравнения (например, "Артикул" в обеих таблицах).
  5. Выберите тип объединения: Только совпадающие строки (это аналог INNER JOIN в SQL).
  6. Нажмите ОК, затем Закрыть и загрузитьExcel создаст новый лист с совпадающими строками.

🔹 Преимущества Power Query:

  • 🚀 Обрабатывает миллионы строк без тормозов.
  • 🔄 Автоматически обновляет результаты при изменении исходных данных.
  • 🛠️ Позволяет очищать данные (удалять пробелы, исправлять регистр) перед сравнением.

⚠️ Внимание: Если в ваших таблицах есть дубликаты (например, один и тот же артикул встречается несколько раз), Power Query создаст декартово произведение — т.е. каждая строка из первой таблицы соединится с каждой совпадающей строкой из второй. Чтобы этого избежать, предварительно удалите дубликаты (Главная → Удалить строки → Удалить дубликаты).

Как удалить дубликаты перед объединением в Power Query?

1. В редакторе Power Query выделите столбец, по которому ищете дубли (например, "Артикул").

2. Нажмите Главная → Удалить строки → Удалить дубликаты.

3. Повторите для второй таблицы.

4. Только после этого выполняйте объединение.

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

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

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

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

    Dim ws1 As Worksheet, ws2 As Worksheet, wsResult As Worksheet

    Dim lastRow1 As Long, lastRow2 As Long, i As Long, j As Long, resultRow As Long

    Dim keyColumn1 As Integer, keyColumn2 As Integer

    ' Настройте здесь названия листов и столбцы для сравнения

    Set ws1 = ThisWorkbook.Sheets("Лист1") ' Первая таблица

    Set ws2 = ThisWorkbook.Sheets("Лист2") ' Вторая таблица

    keyColumn1 = 1 ' Столбец для сравнения в первой таблице (1 = A)

    keyColumn2 = 1 ' Столбец для сравнения во второй таблице

    ' Создаём новый лист для результатов

    On Error Resume Next

    Application.DisplayAlerts = False

    ThisWorkbook.Sheets("Совпадения").Delete

    Application.DisplayAlerts = True

    On Error GoTo 0

    Set wsResult = ThisWorkbook.Sheets.Add(After:=ws2)

    wsResult.Name = "Совпадения"

    ' Копируем заголовки

    ws1.Rows(1).Copy wsResult.Rows(1)

    ' Находим последние строки

    lastRow1 = ws1.Cells(ws1.Rows.Count, keyColumn1).End(xlUp).Row

    lastRow2 = ws2.Cells(ws2.Rows.Count, keyColumn2).End(xlUp).Row

    resultRow = 2 ' Начинаем со второй строки (первая - заголовки)

    ' Сравниваем строки

    For i = 2 To lastRow1

    For j = 2 To lastRow2

    If ws1.Cells(i, keyColumn1).Value = ws2.Cells(j, keyColumn2).Value Then

    ws1.Rows(i).Copy wsResult.Rows(resultRow)

    resultRow = resultRow + 1

    Exit For ' Прерываем цикл, если нашли совпадение

    End If

    Next j

    Next i

    MsgBox "Готово! Найдено " & resultRow - 2 & " совпадений.", vbInformation

    End Sub

  4. Закройте редактор и запустите макрос через Вид → Макросы → FindMatches → Выполнить.

🔧 Настройка макроса:

  • Измените названия листов (Лист1, Лист2) на свои.
  • В переменных keyColumn1 и keyColumn2 укажите номера столбцов для сравнения (1 = A, 2 = B и т.д.).
  • Если нужно сравнивать по нескольким столбцам, добавьте дополнительные условия в цикл If.

6. Сводные таблицы для анализа совпадений

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

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

  1. Объедините обе таблицы в одну (скопируйте данные из второй таблицы под данные первой).
  2. Добавьте вспомогательный столбец "Источник" с метками "Таблица 1" и "Таблица 2".
  3. Создайте сводную таблицу, где:
    • В Строки перетащите столбец, по которому сравниваете (например, "Артикул").
    • В Значения добавьте столбец "Источник" и настройте отображение как "Количество".
  • Отфильтруйте сводную таблицу, оставив только строки, где количество = 2 (т.е. артикул встречается в обеих таблицах).
  • 📊 Пример результата:

    Артикул Количество источников
    Товар_001 2
    Товар_005 2
    Товар_012 1

    Чтобы скопировать совпадающие строки в новую таблицу:

    1. Вернитесь к исходным данным.
    2. Отфильтруйте их по столбцу "Артикул", оставив только те, что есть в сводной таблице с количеством = 2.
    3. Скопируйте отфильтрованные данные на новый лист.
    4. Сравнение методов: какой выбрать?

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

      • 📌 До 1 000 строк: ВПР или условное форматирование.
      • 📌 1 000–50 000 строк: ПОИСКПОЗ + ИНДЕКС или Power Query.
      • 📌 Свыше 50 000 строк: только Power Query или VBA.
      • 📌 Регулярное сравнение: VBA-макрос или Power Query (с автоматическим обновлением).
      • 📌 Нужна визуализация: условное форматирование или сводные таблицы.

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

      ⚠️ Внимание: При работе с большими файлами (100+ МБ) любой метод может тормозить. В таких случаях:

      • Разбейте данные на части (например, по алфавиту).
      • Используйте Power Query — он оптимизирован для больших объёмов.
      • Сохраните файл в формате .xlsb (двоичный формат Excel), он работает быстрее.

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

      Можно ли сравнить таблицы из разных файлов Excel?

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

      • В ВПР или ПОИСКПОЗ используйте ссылки вида [Книга2.xlsx]Лист1!$A$1:$B$100.
      • В Power Query нажмите Данные → Получить данные → Из файла → Из книги Excel и выберите второй файл.
      • В VBA откройте второй файл через Workbooks.Open и ссылайтесь на его листы.

      ⚠️ Убедитесь, что оба файла открыты одновременно, иначе ссылки перестанут работать.

      Как сравнить таблицы, если данные в разных регистрах (заглавные/строчные буквы)?

      Приведите текст к одному регистру с помощью функций:

      • ПРОПИСН — весь текст заглавными (пример: =ПРОПИСН(A2)).
      • СТРОЧН — весь текст строчными.
      • ПРОПНАЧ — первая буква заглавная, остальные строчные.

      Сравнивайте уже приведённые данные. Например:

      =ВПР(ПРОПИСН(A2);$D$2:$E$100;2;ЛОЖЬ)
      Почему ВПР не находит совпадения, хотя они есть?

      Частые причины:

      • 🔸 Лишние пробелы — используйте СЖПРОБЕЛЫ.
      • 🔸 Скрытые символы (например, неразрывный пробел) — замените их через НАЙТИ/ЗАМЕНИТЬ (Ctrl+H).
      • 🔸 Разный формат ячеек (текст vs число) — приведите к одному формату с помощью ТЕКСТ или ЗНАЧЕН.
      • 🔸 Ошибки в диапазоне — проверьте, что в формуле указаны правильные столбцы.

    💡 Совет: Для диагностики добавьте вспомогательный столбец с формулой =A2=D2 (сравнение ячеек напрямую). Если результат ЛОЖЬ, несмотря на визуальное совпадение, ищите скрытые символы.

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

    Используйте вспомогательный столбец с конкатенацией (объединением) значений. Например, если нужно сравнить по "ФИО" и "Телефон":

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

      (где A2 — ФИО, B2 — телефон, а "|" — разделитель).

    2. Сравнивайте таблицы по этому новому столбцу с помощью ВПР или ПОИСКПОЗ.

    Для Power Query:

    1. Объедините столбцы через Добавить столбец → Пользовательский столбец.
    2. Используйте формулу [ФИО] & "|" & [Телефон].
    3. Объедините таблицы по этому столбцу.
    Можно ли автоматически обновлять результаты сравнения при изменении исходных данных?

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

    • 🔄 Формулы (ВПР, ИНДЕКС) — обновляются автоматически при изменении данных.
    • 🔄 Power Query — нажмите Данные → Обновить все (или настройте автоматическое обновление в Свойства запроса).
    • 🔄 VBA — добавьте в код обработчик событий Worksheet_Change, чтобы макрос запускался при изменении данных.
    • 🔄 Сводные таблицы — обновляются через Анализ → Обновить.

    Для полной автоматизации в Power Query:

    1. Откройте редактор запросов.
    2. Нажмите Главная → Закрыть и загрузить → Загрузить в → Таблица → Добавить в модель данных.
    3. Создайте сводную таблицу на основе этой модели — она будет обновляться при изменении исходных данных.