Как найти одинаковые значения в разных столбцах Excel и сопоставить их: 5 проверенных методов

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

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

Особое внимание уделим трём ключевым сценариям:

  • 🔍 Поиск точных дубликатов (например, совпадающие email в разных базах)
  • 📊 Сопоставление с частичным совпадением (когда данные могут отличаться регистром или пробелами)
  • 🔄 Динамическое обновление (когда исходные данные меняются, а результаты должны пересчитываться автоматически)

Прежде чем переходить к практике, проверьте версию вашего Excel. Некоторые методы (например, функции XLOOKUP или UNIQUE) доступны только в Excel 365 и Excel 2021. Для старых версий мы предложим альтернативные решения.

📊 Какую версию Excel вы используете?
Excel 365
Excel 2019-2021
Excel 2016 или старше
Не знаю

1. Метод 1: Формулы для поиска совпадений (VLOOKUP, INDEX-MATCH, XLOOKUP)

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

Функция VLOOKUP подходит для поиска совпадений в одном столбце и возврата данных из другого. Например, если у вас есть список ID клиентов в столбце A и их email в столбце B, а в столбце D — другой список ID, то формула вернёт email для совпадающих ID:

=VLOOKUP(D2; A:B; 2; FALSE)

Где:

  • 📌 D2 — ячейка с искомым значением
  • 📌 A:B — диапазон поиска (первый столбец должен содержать уникальные значения)
  • 📌 2 — номер столбца, откуда возвращать данные
  • 📌 FALSE — точный поиск (без приближений)

⚠️ Внимание! VLOOKUP ищет только в первом столбце диапазона. Если совпадение не найдено, вернёт ошибку #N/A. Чтобы скрыть ошибки, оберните формулу в IFERROR:

=IFERROR(VLOOKUP(D2; A:B; 2; FALSE); "Не найдено")

Более гибкая альтернатива — комбинация INDEX и MATCH. Она позволяет искать в любом столбце и работает быстрее на больших массивах:

=INDEX(B:B; MATCH(D2; A:A; 0))

Для поиска всех совпадений (не только первого) используйте формулу массива (вводится через Ctrl+Shift+Enter в старых версиях Excel):

=IFERROR(INDEX($B$2:$B$100; SMALL(IF($A$2:$A$100=$D2; ROW($A$2:$A$100)-1); COLUMN(A1))); "")

В Excel 365 появилась революционная функция XLOOKUP, которая решает большинство проблем VLOOKUP:

=XLOOKUP(D2; A:A; B:B; "Не найдено"; 0; 1)

Её преимущества:

  • 🔹 Ищет в любом столбце (не только в первом)
  • 🔹 Возвращает несколько совпадений через # (спиллинг)
  • 🔹 Поддерживает поиск по шаблону (с подстановочными знаками * и ?)

Создайте резервную копию данных|Проверьте отсутствие скрытых символов (пробелов, неразрывных пробелов)|Преобразуйте текст в одинаковый регистр (если нужно игнорировать регистр)|Отсортируйте данные для ускорения поиска-->

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

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

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

  1. Выделите диапазон, где нужно найти совпадения (например, A2:A100).
  2. Перейдите на вкладку Главная → Условное форматирование → Создать правило.
  3. Выберите Использовать формулу для определения форматируемых ячеек.
  4. Введите формулу:
    =COUNTIF($B$2:$B$100; A2)>0

    Где $B$2:$B$100 — диапазон для поиска совпадений.

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

Теперь все ячейки в столбце A, которые имеют дубли в столбце B, будут подсвечены. Чтобы найти совпадения между несколькими столбцами, модифицируйте формулу:

=OR(COUNTIF($B$2:$B$100; A2)>0; COUNTIF($C$2:$C$100; A2)>0)

⚠️ Внимание! Условное форматирование не изменяет данные — оно только визуализирует их. Если вам нужно экспортировать результаты, используйте формулы из первого метода или метод Power Query (см. раздел 4).

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

=COUNTIF($B$2:$D$100; A2)=0

Где $B$2:$D$100 — диапазон столбцов для проверки.

3. Метод 3: Использование функции СЧЁТЕСЛИМН для сложных условий

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

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

=СЧЁТЕСЛИМН($A$2:$A$100; D2; $B$2:$B$100; E2)>0

Где:

  • 📌 $A$2:$A$100 — столбец с ID клиента в первой таблице
  • 📌 D2ID клиента из второй таблицы
  • 📌 $B$2:$B$100 — столбец с номерами заказов в первой таблице
  • 📌 E2номер заказа из второй таблицы

Если результат > 0, значит совпадение найдено. Чтобы вернуть не просто ИСТИНА/ЛОЖЬ, а конкретные данные, комбинируйте СЧЁТЕСЛИМН с ИНДЕКС-ПОИСКПОЗ:

=ЕСЛИ(СЧЁТЕСЛИМН($A$2:$A$100; D2; $B$2:$B$100; E2)>0; ИНДЕКС($C$2:$C$100; ПОИСКПОЗ(1; ($A$2:$A$100=D2)*($B$2:$B$100=E2); 0)); "Не найдено")

Эта формула вернёт значение из столбца C (например, сумму заказа) для строки, где совпадают оба критерия.

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

=И(СЧЁТЕСЛИМН($A$2:$A$100; D2)>0; СЧЁТЕСЛИМН($B$2:$B$100; E2)>0)
Как ускорить работу формул на больших данных?

1. Преобразуйте диапазоны в умные таблицы (Ctrl+T) — это ускорит пересчёт.

2. Используйте имена диапазонов вместо ссылок на ячейки (например, =СЧЁТЕСЛИМН(ClientID; D2; OrderNum; E2)).

3. Отключите автоматический пересчёт на время работы с формулами: Формулы → Вычисления → Вручную (не забудьте вернуть обратно!).

4. Для поиска по тексту используйте ПОИСК вместо =, если нужно игнорировать регистр: =ПОИСК(D2; A2)>0

4. Метод 4: Power Query для сложного сопоставления данных

Power Query (вкладка Данные → Получить данные) — это инструмент для ETL-процессов (извлечение, преобразование, загрузка). Он идеален, когда нужно:

  • 🔄 Сопоставить данные из разных файлов или листов
  • 📂 Обработать большие объёмы (миллионы строк)
  • 🔄 Автоматизировать регулярные отчёты

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

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

    ⚠️ Внимание! Power Query создаёт статическую копию данных на момент загрузки. Чтобы обновить результаты после изменений в исходных таблицах, нажмите Данные → Обновить все.

    Продвинутый трюк: если столбцы для сопоставления имеют разные форматы (например, текст vs число), используйте преобразование типов в Power Query:

    1. Выделите столбец → Преобразовать → Тип данных.
    2. Приведите оба столбца к одному типу (например, Текст).
    3. Для чисел с ведущими нулями (например, 00123) используйте Текст.
    Тип объединения Результат Когда использовать
    Внутреннее Только строки с совпадениями в обоих таблицах Поиск пересечений (например, оплаченные заказы)
    Левое внешнее Все строки из первой таблицы + совпадения из второй Проверка, какие элементы из первого списка есть во втором
    Правое внешнее Все строки из второй таблицы + совпадения из первой Проверка, какие элементы из второго списка есть в первом
    Полное внешнее Все строки из обеих таблиц Создание единого списка без дубликатов

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

    Если вам нужно не просто найти совпадения, а проанализировать их распределение (например, сколько раз каждый ID встречается в разных столбцах), используйте сводные таблицы.

    Инструкция:

    1. Преобразуйте исходные данные в умную таблицу (Ctrl+T).
    2. Добавьте вспомогательный столбец с названием источника (например, Список 1, Список 2).
    3. Объедините обе таблицы в одну (например, скопируйте данные из второго списка под первым).
    4. Создайте сводную таблицу (Вставка → Сводная таблица).
    5. Поместите поле с ID в Строки, а поле с источником — в Значения (опция Количество).
    6. В результате вы получите таблицу, где по строкам — уникальные ID, а по столбцам — количество их вхождений в каждом исходном списке. Это поможет быстро выявить:

      • 🔹 Дубликаты (ID, которые встречаются в обоих списках)
      • 🔹 Уникальные значения (ID, которые есть только в одном списке)
      • 🔹 Частотность (сколько раз каждый ID повторяется)

    Пример: если в сводной таблице для ID=123 в столбце Список 1 стоит 1, а в Список 22, значит этот ID встречается один раз в первом списке и дважды во втором.

    Совет: чтобы автоматизировать процесс, запишите макрос для создания сводной таблицы. Для этого:

    1. Включите запись макроса (Вид → Макросы → Записать макрос).
    2. Выполните все шаги создания сводной таблицы вручную.
    3. Остановите запись и сохраните макрос.

    Теперь вы сможете запускать его одной кнопкой.

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

    При поиске совпадений в Excel пользователи часто сталкиваются с неожиданными результатами. Разберём самые распространённые ошибки и способы их решения.

    1. Совпадения не находятся, хотя данные визуально одинаковые

    Причина: скрытые символы (пробелы, переносы строк, непечатаемые символы).

    Решение:

    • 🧹 Используйте =СЖПРОБЕЛЫ(A2) для удаления лишних пробелов.
    • 🧹 Примените =ПЕЧСИМВ(A2), чтобы увидеть все символы (включая невидимые).
    • 🧹 Для удаления непечатаемых символов:
      =ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2; CHAR(160); ""); CHAR(10); ""); CHAR(13); "")

    2. Формулы работают медленно на больших данных

    Причина: избыточные вычисления или неоптимальные диапазоны.

    Решение:

    • ⚡ Замените диапазоны вида A:A на конкретные (A2:A10000).
    • ⚡ Используйте умные таблицы — они оптимизированы для производительности.
    • ⚡ Отключите автоматический пересчёт (Формулы → Вычисления → Вручную) на время работы.

    3. Функция VLOOKUP возвращает #N/A, хотя значение есть

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

    Решение:

    • 🔍 Убедитесь, что четвёртый аргумент VLOOKUP равен FALSE (точный поиск).
    • 🔍 Проверьте формат данных: текст vs число (например, "123"123).
    • 🔍 Используйте TRIM для удаления пробелов:
      =VLOOKUP(TRIM(D2); A:B; 2; FALSE)

    4. Power Query не находит совпадений при объединении

    Причина: разные регистры или кодировки.

    Решение:

    • 🔤 Преобразуйте оба столбца к одному регистру: выделите столбец → Преобразовать → Регистр → НИЖНИЙ.
    • 🔤 Проверьте кодировку (особенно если данные импортированы из CSV или базы данных).

    Критическая ошибка: если вы используете Удалить дубликаты (Данные → Удалить дубликаты), помните, что эта функция удаляет строки, где все значения в выбранных столбцах совпадают. Если вам нужно найти дубли только по одному столбцу (например, Email), предварительно отсортируйте данные по этому столбцу.

    7. Автоматизация: макросы для регулярного сопоставления

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

    Макрос для поиска и выделения дубликатов:

    Sub FindDuplicates()
    

    Dim rng1 As Range, rng2 As Range

    Dim cell1 As Range, cell2 As Range

    Dim color As Long: color = RGB(255, 200, 200) 'Светло-красный

    'Задайте диапазоны для сравнения

    Set rng1 = Range("A2:A100") 'Первый столбец

    Set rng2 = Range("B2:B100") 'Второй столбец

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

    rng1.Interior.ColorIndex = xlNone

    rng2.Interior.ColorIndex = xlNone

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

    For Each cell1 In rng1

    For Each cell2 In rng2

    If cell1.Value = cell2.Value Then

    cell1.Interior.Color = color

    cell2.Interior.Color = color

    End If

    Next cell2

    Next cell1

    End Sub

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

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

    Модификации макроса:

    • 🔹 Чтобы искать совпадения без учёта регистра, замените If cell1.Value = cell2.Value на:
      If LCase(cell1.Value) = LCase(cell2.Value)
    • 🔹 Чтобы выделять уникальные значения, добавьте проверку:
      If WorksheetFunction.CountIf(rng2, cell1.Value) = 0 Then cell1.Interior.Color = RGB(200, 255, 200)

    ⚠️ Внимание! Макросы могут конфликтовать с условным форматированием. Если после запуска макроса пропал цвет из условного форматирования, обновите его вручную (Главная → Условное форматирование → Управление правилами → Обновить).

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

    ❓ Как найти совпадения, если данные в столбцах разного регистра?

    Используйте функции ПРОПИСН (UPPER), СТРОЧН (LOWER) или ПРОПНАЧ (PROPER) для приведения к одному регистру. Пример:

    =VLOOKUP(UPPER(D2); UPPER(A:A); 1; FALSE)

    Или в Power Query: выделите столбец → Преобразовать → Регистр → ВЕРХНИЙ.

    ❓ Можно ли найти совпадения в разных файлах Excel?

    Да, есть три способа:

    1. Формулы: используйте ссылки на другой файл:
      =VLOOKUP(A2; [Книга2.xlsx]Лист1!$A:$B; 2; FALSE)
      Важно: оба файла должны быть открыты.
    2. Power Query: импортируйте данные из второго файла (Данные → Получить данные → Из файла → Из книги Excel), затем объедините запросы.
    3. Сводные таблицы: создайте связь между файлами через Данные → Подключения → Связать с данными.
    ❓ Как экспортировать только совпадающие строки?

    Способ 1: используйте Фильтр по вспомогательному столбцу с формулой (например, =ЕСЛИ(СЧЁТЕСЛИ($B:$B; A2)>0; "Дубликат"; "")), затем скопируйте отфильтрованные данные.

    Способ 2: в Power Query после объединения таблиц удалите строки без совпадений (Главная → Удалить строки → Удалить пустые).

    ❓ Почему СЧЁТЕСЛИМН не работает с датами?

    Дата в Excel может храниться как число (например, 44197 для 01.01.2021) или как текст ("01.01.2021"). Проверьте формат ячеек:

    1. Выделите столбец с датами → Главная → Формат → Формат ячеек.
    2. Убедитесь, что выбран формат Дата (не Текст или Общий).
    3. Если даты хранятся как текст, преобразуйте их в даты с помощью ДАТАЗНАЧ:
      =ДАТАЗНАЧ(A2)
    ❓ Как найти частичные совпадения (например, начало строки)?

    Используйте подстановочные знаки в формулах:

    • 🔹 =СЧЁТЕСЛИ(A:A; D2 & "*") — ищет строки, начинающиеся с значения из D2.
    • 🔹 =ПОИСК(D2; A2)>0 — проверяет, содержится ли D2 внутри A2 (без учёта регистра).
    • 🔹 В XLOOKUP:
      =XLOOKUP(D2 & "*"; A:A; B:B; "Не найдено"; 2; 1)

      где 2 — поиск с подстановочными знаками.