Как сопоставить два столбца в Excel на совпадение: от простых формул до продвинутых методов

Почему стандартное сравнение столбцов в Excel часто даёт сбои

Вы когда-нибудь пытались вручную сравнить два списка в Excel и через час понимали, что пропустили половину несовпадений? Или формула ЕСЛИ выдавала ошибки на каждой второй строке? Проблема в том, что Excel не имеет встроенной кнопки "Найти все совпадения" — здесь нужны точные инструменты и понимание логики сравнения.

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

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

  1. Как избежать ложных совпадений (когда "Иванов" и " Иванов" считаются разными)
  2. Почему ВПР проигрывает современным функциям вроде XLOOKUP
  3. Когда условное форматирование становится бесполезным (спойлер: при 50 000+ строк)

Метод 1: Простое сравнение с формулой ЕСЛИ (для новичков)

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

=ЕСЛИ(A2=B2; "Совпадает"; "Не совпадает")

Где:

  • 📌 A2 — первая ячейка первого столбца
  • 📌 B2 — первая ячейка второго столбца
  • 📌 Текст в кавычках — произвольные метки (можно заменить на 1/0 или ИСТИНА/ЛОЖЬ)

⚠️ Внимание: Эта формула не учитывает регистр! "Привет" и "привет" для неё — разные значения. Чтобы игнорировать регистр, используйте:

=ЕСЛИ(СРЗНАЧ(ПРОПИСН(A2)=ПРОПИСН(B2)); "Совпадает"; "Не совпадает")
Столбец A Столбец B Формула Результат
Артикул 123 артикул 123 =ЕСЛИ(A2=B2;...) Не совпадает
Артикул 123 артикул 123 =ЕСЛИ(ПРОПИСН(A2)=ПРОПИСН(B2);...) Совпадает
Артикул 123 Артикул 123 =ЕСЛИ(СЖПРОБЕЛЫ(A2)=СЖПРОБЕЛЫ(B2);...) Совпадает

Метод 2: Поиск совпадений в столбцах разной длины (ВПР vs XLOOKUP)

Когда один столбец длиннее другого, формула ЕСЛИ бесполезна. Здесь нужны функции поиска. Классический вариант — ВПР (VLOOKUP), но у неё три фатальных недостатка:

  • 🔴 Ищет только в первом столбце диапазона
  • 🔴 Не умеет искать влево (только вправо от искомого столбца)
  • 🔴 Требует сортировки данных для точного поиска

Пример с ВПР (ищем значения из B2:B10 в A2:A100):

=ЕСЛИНЕОШ(ВПР(B2; $A$2:$A$100; 1; ЛОЖЬ); "Нет"; "Есть")

Лучшая альтернатива — XLOOKUP (Excel 365/2021):

=ЕСЛИНЕОШ(XLOOKUP(B2; $A$2:$A$100; $A$2:$A$100); "Нет"; "Есть")
📊 Какую версию Excel вы используете?
Excel 2010 или старше
Excel 2013-2019
Excel 2021/365
Google Sheets
Другая

Критическое отличие: XLOOKUP ищет в любом направлении и возвращает не только первое совпадение, но и все последующие (если использовать параметр match_mode=-1 для поиска последнего вхождения).

Метод 3: Условное форматирование для визуального сравнения

Если нужно выделить совпадения цветом, а не получать текстовые метки, используйте условное форматирование:

  1. Выделите диапазон (например, B2:B100)
  2. Перейдите в Главная → Условное форматирование → Создать правило
  3. Выберите Использовать формулу... и введите:
    =НЕ(ЕОШ(ПОИСКПОЗ(B2; $A$2:$A$100; 0)))
  4. Задайте цвет заполнения (например, зелёный для совпадений)

🔹 Для обратной задачи (выделить НЕсовпадения) используйте:

=ЕОШ(ПОИСКПОЗ(B2; $A$2:$A$100; 0))
Почему ПОИСКПОЗ лучше ЧСТРОК для больших данных?

Функция ЧСТРОК (COUNTIF) пересчитывает весь диапазон при каждом изменении, тогда как ПОИСКПОЗ (MATCH) останавливается после первого найденного совпадения. На 50 000+ строк разница в скорости достигает 10-15 секунд.

⚠️ Внимание: Условное форматирование тормозит Excel при работе с диапазонами больше 100 000 ячеек. В таких случаях используйте Power Query (см. Метод 6).

Метод 4: Извлечение совпадений и уникальных значений (функция ЕЧИСЛО + ПОИСКПОЗ)

Чтобы получить список только совпадающих или только уникальных значений, комбинируйте функции:

Список совпадений (значения из B, которые есть в A):

=ЕСЛИОШ(ИНДЕКС($A$2:$A$100; ПОИСКПОЗ(B2; $A$2:$A$100; 0)); ""; B2)

Список уникальных значений (значения из B, которых нет в A):

=ЕСЛИ(ЕЧИСЛО(ПОИСКПОЗ(B2; $A$2:$A$100; 0)); ""; B2)

📌 Профи-приём: Чтобы автоматически фильтровать пустые ячейки в результате, преобразуйте диапазон в умную таблицу (Ctrl+T) и примените фильтр.

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

Привести к одному регистру (ПРОПИСН/СТРОЧН)|

Преобразовать числа-как-текст в числа (ЗНАЧЕН)|

Удалить дубликаты (Данные → Удалить дубликаты)-->

Метод 5: Сравнение с учётом частичных совпадений (ПОИСК, НАЙТИ, РЕГЕКС)

Если нужно найти частичные совпадения (например, "Артикул 123" и "123" должны считаться совпадающими), используйте:

1. Простой поиск подстроки:

=ЕСЛИ(ЕЧИСЛО(ПОИСК(B2; A2)); "Есть вхождение"; "")

2. Поиск по шаблону (регулярные выражения в Excel 365):

=ЕСЛИ(РЕГЕКССОВП(A2; "\d{3}")=РЕГЕКССОВП(B2; "\d{3}"); "Совпадают"; "")

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

⚠️ Внимание: Функция РЕГЕКССОВП (REGEXMATCH) доступна только в Excel 365 и Excel 2021. Для старых версий используйте VBA или Power Query.

Метод 6: Продвинутое сравнение с Power Query (для больших данных)

Когда столбцы содержат десятки тысяч строк, формулы начинают "подвисать". Здесь спасает Power Query (вкладка Данные → Получить данные):

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

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

    Метод 7: Автоматизация через VBA (для повторяющихся задач)

    Если вам приходится сравнивать столбцы еженедельно, напишите простой макрос:

    Sub FindMatches()
    

    Dim ws As Worksheet

    Dim rng1 As Range, rng2 As Range

    Dim cell As Range

    Dim i As Long, lastRow As Long

    Set ws = ActiveSheet

    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    Set rng1 = ws.Range("A2:A" & lastRow)

    Set rng2 = ws.Range("B2:B" & lastRow)

    For Each cell In rng2

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

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

    Else

    cell.Offset(0, 1).Value = "Не совпадает"

    End If

    Next cell

    End Sub

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

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

    ⚠️ Внимание: Перед запуском макроса сохраните файл как .xlsm (с поддержкой макросов), иначе код не сохранится!

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

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

    Да, все формулы из этой статьи работают в Google Sheets, за исключением:

    • 🔴 XLOOKUP — замените на INDEX(MATCH())
    • 🔴 РЕГЕКССОВП — используйте REGEXMATCH (синтаксис идентичен)
    • 🔴 Power Query — в Google Sheets аналог называется Connected Sheets (доступен в платных тарифах)

    Почему формула выдаёт #Н/Д вместо "Не совпадает"?

    Ошибка #Н/Д появляется, когда:

    • 🔹 В ячейке пусто (используйте ЕСЛИ(A2=""; ""; ваша_формула))
    • 🔹 Формат ячеек разный (текст vs число — преобразуйте через ЗНАЧЕН)
    • 🔹 Есть скрытые символы (проверьте через КОДСИМВОЛ(A2))

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

    Используйте комбинацию функций. Например, чтобы проверить совпадение и по артикулу (A2), и по цене (B2):

    =ЕСЛИ(И(A2=D2; B2=E2); "Полное совпадение"; "Не совпадает")

    Для частичных совпадений по нескольким столбцам подходит СУММПРОИЗВ:

    =ЕСЛИ(СУММПРОИЗВ(--(A2=$D$2:$D$100); --(B2=$E$2:$E$100))>0; "Есть совпадение"; "")
    Можно ли сравнить столбцы из разных файлов Excel?

    Да, но нужно правильно сослаться на внешний файл:

    1. Откройте оба файла
    2. В основном файле введите формулу вида:
      =ЕСЛИНЕОШ(ВПР(A2; [Книга2.xlsx]Лист1!$A$2:$B$100; 2; ЛОЖЬ); "Нет"; "Есть")
    3. При первом использовании Excel запросит разрешение на связь с внешним источником

    ⚠️ Важно: При перемещении или переименовании внешнего файла ссылки сломаются!

    Как ускорить сравнение очень больших столбцов (100 000+ строк)?

    Для ускорения:

    • 🔹 Отключите автоматический пересчёт формул (Формулы → Параметры вычислений → Вручную)
    • 🔹 Используйте Power Query (см. Метод 6) — он оптимизирован для больших данных
    • 🔹 Разбейте данные на части (например, сравнивайте по 20 000 строк за раз)
    • 🔹 Для VBA отключите обновление экрана:
      Application.ScreenUpdating = False
      

      '--- Ваш код ---

      Application.ScreenUpdating = True