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

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

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

Особое внимание уделим производительности: некоторые формулы могут существенно тормозить файл при работе с десятками тысяч строк. Также вы узнаете, как автоматизировать процесс с помощью VBA и почему стандартный инструмент «Найти и выделить» не всегда подходит для таких задач.

Если вы регулярно работаете с данными, этот гайд сэкономит вам часы времени. Начнём с самого простого метода — и постепенно перейдём к профессиональным техникам.

1. Метод с функцией ПРОСМОТР (LOOKUP) — быстро и без надстроек

Функция ПРОСМОТР (или LOOKUP в английской версии) — один из самых старых, но всё ещё актуальных инструментов для поиска расхождений между столбцами. Её главное преимущество: работает даже в Excel 2003 и не требует дополнительных надстроек. Однако у метода есть ограничение: столбцы должны быть отсортированы по алфавиту, иначе результат будет некорректным.

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

=ЕСЛИОШИБКА(ПРОСМОТР(2;1/(A2=$B$2:$B$100);$B$2:$B$100);"Уникальное")

Здесь $B$2:$B$100 — диапазон второго столбца (измените на свой). Если значение из ячейки A2 не найдено в столбце B, формула вернёт «Уникальное».

⚠️ Внимание: Этот метод чувствителен к регистру и пробелам. Если в данных есть скрытые символы (например, неразрывные пробелы), используйте функцию СЖПРОБЕЛЫ для очистки:

=ПРОСМОТР(2;1/(СЖПРОБЕЛЫ(A2)=СЖПРОБЕЛЫ($B$2:$B$100));$B$2:$B$100)
  • ✅ Работает в любых версиях Excel
  • ✅ Не требует установки надстроек
  • ⚠️ Требует сортировки данных
  • ⚠️ Медленно работает с большими массивами (>10 000 строк)
📊 Какой версии Excel вы пользуетесь?
2010-2013
2016-2019
Office 365/2021
Другая

2. Современный подход: функции ЕЧИСЛО+ПОИСКПОЗ (ISNUMBER+MATCH)

Комбинация ЕЧИСЛО (или ISNUMBER) с ПОИСКПОЗ (MATCH) — это «золотой стандарт» для поиска уникальных значений. Метод не требует сортировки и справляется с данными любого объёма. Формула выглядит так:

=ЕСЛИ(ЕЧИСЛО(ПОИСКПОЗ(A2;$B$2:$B$100;0));"Есть в B";"Уникальное")

Разберём, как это работает:

  1. ПОИСКПОЗ(A2;$B$2:$B$100;0) ищет точное совпадение значения из A2 в диапазоне B2:B100.
  2. ЕЧИСЛО проверяет, вернулся ли номер позиции (число) или ошибка #Н/Д (если совпадений нет).
  3. ЕСЛИ выводит «Есть в B» или «Уникальное» в зависимости от результата.

Для удобства можно выделить уникальные значения цветом с помощью условного форматирования:

  1. Выделите диапазон с формулой.
  2. Перейдите в Главная → Условное форматирование → Создать правило.
  3. Выберите «Форматировать только ячейки, которые содержат».
  4. Установите условие «Текст содержит» → «Уникальное» и задайте цвет заливки.

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

3. Продвинутый метод: XLOOKUP для Excel 365 и 2021

Если вы используете Excel 365 или Excel 2021, функция XLOOKUP станет вашим лучшим помощником. Она не только ищет совпадения, но и позволяет задавать пользовательское сообщение для отсутствующих значений. Синтаксис проще, чем у ПОИСКПОЗ, а производительность выше.

Формула для поиска уникальных значений:

=ЕСЛИ(ЕОШ(XLOOKUP(A2;$B$2:$B$100;$B$2:$B$100;;0));"Уникальное";"Есть в B")

Аргументы функции:

  • A2 — искомое значение;
  • $B$2:$B$100 — диапазон поиска;
  • $B$2:$B$100 — диапазон возврата (можно заменить на любой другой);
  • "" — значение, если совпадение не найдено (пустая строка);
  • 0 — режим точного совпадения.

Критическое преимущество XLOOKUP: она автоматически обрабатывает массивы и не требует нажатия Ctrl+Shift+Enter для формул массива. Это значит, что вы можете просто протянуть формулу вниз — и она будет работать корректно.

⚠️ Внимание: В версиях Excel старше 2019 XLOOKUP недоступна.Attempting to use it will result in a #ИМЯ? error.

Метод Поддерживаемые версии Требует сортировки Производительность
ПРОСМОТР Все версии Да Низкая
ЕЧИСЛО+ПОИСКПОЗ Все версии Нет Средняя
XLOOKUP 365, 2021 Нет Высокая
Power Query 2010+ (надстройка) Нет Очень высокая

4. Power Query: обработка миллионов строк без формул

Если вам нужно сравнить столбцы с десятками или сотнями тысяч строк, обычные формулы будут работать слишком медленно. В этом случае на помощь придёт Power Query — инструмент для преобразования и очистки данных, встроенный в Excel 2016+ (в 2010 и 2013 требуется бесплатная надстройка).

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

  1. Выделите оба столбца и перейдите на вкладку Данные → Из таблицы/диапазона (или Get & Transform → From Table/Range в английской версии).
  2. В открывшемся редакторе Power Query выберите столбец A, затем нажмите Главная → Объединить запросы → Объединить.
  3. В окне объединения выберите:
    • Таблицу с данными столбца B;
    • Тип объединения: «Левое анти-объединение» (Left Anti Join);
    • Совпадающие столбцы: столбец A из первой таблицы и столбец B из второй.
  • Нажмите OK — в результате останутся только уникальные значения из столбца A.
  • Нажмите Главная → Закрыть и загрузить, чтобы вернуть данные в Excel.
  • ⚠️ Внимание: Power Query создаёт связь с исходными данными. Если они изменятся, обновите запрос через Данные → Обновить все. Это гарантирует актуальность результатов.

    5. Автоматизация с помощью VBA: макрос для сравнения столбцов

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

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

    Sub FindUniqueValues()
    

    Dim ws As Worksheet

    Dim lastRowA As Long, lastRowB As Long

    Dim dict As Object

    Dim i As Long, j As Long

    Dim uniqueCount As Long

    Set ws = ActiveSheet

    Set dict = CreateObject("Scripting.Dictionary")

    ' Определяем последнюю строку в столбце B

    lastRowB = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row

    ' Заполняем словарь значениями из столбца B

    For i = 2 To lastRowB

    dict(ws.Cells(i, 2).Value) = 1

    Next i

    ' Определяем последнюю строку в столбце A

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

    ' Проверяем значения в столбце A

    uniqueCount = 0

    For j = 2 To lastRowA

    If Not dict.exists(ws.Cells(j, 1).Value) Then

    ws.Cells(j, 3).Value = "Уникальное"

    uniqueCount = uniqueCount + 1

    Else

    ws.Cells(j, 3).Value = ""

    End If

    Next j

    MsgBox "Найдено уникальных значений: " & uniqueCount, vbInformation

    End Sub

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

    1. Нажмите Alt + F11, чтобы открыть редактор VBA.
    2. Вставьте код в модуль (вставка → модуль).
    3. Вернитесь в Excel и нажмите Alt + F8, выберите макрос FindUniqueValues и запустите его.
    4. Результаты появятся в столбце C, а количество уникальных значений будет выведено в отдельном окне. Макрос учитывает регистр и пробелы — при необходимости добавьте в код функцию Trim для очистки данных.

      Как модифицировать макрос для сравнения других столбцов?

      Чтобы сравнить столбцы C и D, замените в коде все упоминания 2 (столбец B) на 4 (столбец D), а 1 (столбец A) на 3 (столбец C). Например:

      lastRowB = ws.Cells(ws.Rows.Count, "D").End(xlUp).Row
      

      dict(ws.Cells(i, 4).Value) = 1

      Также измените строку вывода результата на ws.Cells(j, 5).Value (столбец E).

      6. Альтернативные инструменты: надстройки и онлайн-сервисы

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

      • 🔹 Надстройка Ablebits: Платный пакет инструментов с функцией Compare Two Columns, которая визуализирует расхождения цветом и создаёт отчёт.
      • 🔹 Kutools for Excel: Бесплатная пробная версия позволяет использовать инструмент Select Same & Different Cells для выделения уникальных значений.
      • 🔹 Онлайн-сервисы: Например, Excel Compare или Diffchecker — загружаете два столбца в формате CSV и получаете результат в браузере. Подходит для разовых задач, но небезопасно для конфиденциальных данных.
      • 🔹 Google Sheets: Формула =FILTER(A2:A;COUNTIF(B2:B;A2:A)=0) вернёт все уникальные значения из столбца A (аналог XLOOKUP для гугл-таблиц).

    ⚠️ Внимание: Онлайн-сервисы могут сохранять загруженные данные на своих серверах. Для работы с персональной информацией (ФИО, номера телефонов) используйте только локальные методы.

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

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

    Да, но с ограничениями. В Excel Online доступны функции ЕЧИСЛО+ПОИСКПОЗ и FILTER, но нет Power Query и XLOOKUP. Также невозможно запускать макросы. Для сложных задач лучше использовать десктопную версию.

    Почему формула возвращает #Н/Д даже когда значения совпадают?

    Наиболее частая причина — скрытые символы (пробелы, переносы строк, непечатаемые знаки). Проверьте данные с помощью функции =КОДСИМВ(A2) — она покажет код первого символа. Для очистки используйте:

    =СЖПРОБЕЛЫ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;СИМВОЛ(160);" ");СИМВОЛ(10);""))

    Здесь СИМВОЛ(160) — неразрывный пробел, а СИМВОЛ(10) — перенос строки.

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

    Используйте формулу с внешней ссылкой. Например, чтобы найти значения из Лист1!A2:A100 (текущий файл), которых нет в [Книга2.xlsx]Лист1!$B$2:$B$100, применяйте:

    =ЕСЛИ(ЕЧИСЛО(ПОИСКПОЗ(A2;[Книга2.xlsx]Лист1!$B$2:$B$100;0));"Есть";"Уникальное")
    Важно: Внешний файл должен быть открыт, иначе формула вернёт #ССЫЛКА!. Для постоянной работы сохраните оба файла в одной папке.

    Можно ли сравнить столбцы по частичному совпадению (например, по первым 5 символам)?

    Да, для этого модифицируйте функцию ПОИСКПОЗ или XLOOKUP. Пример для первых 5 символов:

    =ЕСЛИ(ЕЧИСЛО(ПОИСКПОЗ(ЛЕВСИМВ(A2;5)&"";ЛЕВСИМВ($B$2:$B$100;5)&"";0));"Есть";"Уникальное")

    Здесь ЛЕВСИМВ(A2;5) берёт первые 5 символов из ячейки A2, а &"*" позволяет игнорировать остальную часть текста.

    Как сохранить результаты сравнения в новый файл?

    Если вы использовали Power Query:

    1. После получения результатов нажмите Главная → Закрыть и загрузить → Закрыть и загрузить в....
    2. Выберите «Новая книга» и укажите путь для сохранения.

    Для формул или макросов:

    1. Скопируйте столбец с результатами (Ctrl+C).
    2. Создайте новый файл и вставьте данные (Ctrl+V).
    3. Сохраните как .xlsx или .csv через Файл → Сохранить как.