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

Вы открыли два столбца с данными в Excel и нужно найти, какие элементы есть в одном списке, но отсутствуют в другом — или наоборот. Возможно, вы сверяете прайс-листы, ищете дубликаты в базе клиентов или проверяете, все ли заказы из одного отчёта попали в другой. В 90% случаев для этого не требуется писать макросы: достаточно стандартных функций ВПР, ЕСЛИОШИБКА или инструмента Условное форматирование.

Проблема в том, что универсального метода нет: если списки содержат 10 000+ строк, формулы будут тормозить, а для поиска частичных совпадений (например, "Иванов" vs "Иванов И.П.") понадобятся регулярные выражения или Power Query. В этой статье разберём 8 способов сравнения — от базовых до продвинутых, с примерами для Excel 2016–2023 и Microsoft 365.

1. Быстрое сравнение с помощью условного форматирования

Если нужно визуально выделить совпадения или различия между двумя столбцами, условное форматирование справится за 3 клика. Метод подходит для списков до 5 000 строк и не требует знания формул.

Выполните шаги:

  • 📌 Выделите первый список (например, столбец A2:A100).
  • 🖱️ Перейдите на вкладку Главная → Условное форматирование → Правила выделения ячеек → Повторяющиеся значения.
  • 🎨 В окне выберите формат (например, зелёную заливку для дублей) и нажмите ОК.
  • 🔄 Повторите для второго списка (столбец B2:B100).

Теперь все повторяющиеся значения в обоих столбцах будут подсвечены. Чтобы найти уникальные элементы, отсортируйте данные по цвету: Данные → Сортировка → Сортировать по цвету ячейки.

⚠️ Внимание: Условное форматирование не покажет, какие элементы из первого списка отсутствуют во втором. Для этого используйте методы из следующих разделов.
📊 Как часто вы сравниваете списки в Excel?
Ежедневно
1–2 раза в неделю
Реже 1 раза в месяц
Никогда не делал

2. Формула для поиска совпадений (ВПР + ЕСЛИОШИБКА)

Классический способ — использовать комбинацию ВПР (или XLOOKUP в новых версиях) и ЕСЛИОШИБКА. Формула вернёт ИСТИНА, если элемент из первого списка есть во втором, и ЛОЖЬ — если нет.

Пример для списков в столбцах A и B (начиная со строки 2):

=ЕСЛИОШИБКА(ВПР(A2; $B$2:$B$100; 1; ЛОЖЬ); "Отсутствует"; "Есть")

Расшифровка аргументов:

  • 🔍 A2 — ячейка из первого списка, которую ищем.
  • 📊 $B$2:$B$100 — диапазон второго списка (зафиксирован абсолютными ссылками $).
  • 🔢 1 — номер столбца в диапазоне поиска (здесь всегда 1, так как ищем в одном столбце).
  • ЛОЖЬ — точный поиск (без приближений).

Чтобы найти уникальные элементы первого списка, отфильтруйте столбец с результатом по значению "Отсутствует".

Список 1 (A) Список 2 (B) Формула результата
Яблоко Банан Отсутствует
Груша Груша Есть
Апельсин Киви Отсутствует
=ЕСЛИОШИБКА(XLOOKUP(A2; $B$2:$B$100; $B$2:$B$100); "Нет"; "Да")
-->

3. Поиск уникальных значений функцией СЧЁТЕСЛИ

Если нужно найти элементы, которые есть только в одном из списков, используйте СЧЁТЕСЛИ. Формула подсчитает, сколько раз значение из первого списка встречается во втором. Если результат = 0, элемент уникален.

Пример для ячейки A2:

=ЕСЛИ(СЧЁТЕСЛИ($B$2:$B$100; A2)=0; "Уникально"; "")

Чтобы автоматизировать процесс:

  1. Добавьте вспомогательный столбец с этой формулой рядом с первым списком.
  2. Скопируйте формулу вниз до конца данных.
  3. Отфильтруйте столбец по значению "Уникально".
⚠️ Внимание: СЧЁТЕСЛИ учитывает регистр только в Excel 2019 и новее. Для старых версий используйте СЧЁТЕСЛИМН с дополнительным условием.

4. Сравнение с помощью сводной таблицы

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

Алгоритм:

  1. Скопируйте оба списка на новый лист, добавив рядом столбец с метками (например, "Список1" и "Список2").
  2. Выделите все данные и создайте сводную таблицу: Вставка → Сводная таблица.
  3. Перетащите столбец с элементами в область Строки, а столбец с метками — в Значения (опция Количество).

В результате вы получите таблицу, где каждый уникальный элемент будет отображён с количеством вхождений в каждый список. Элементы с суммой = 1 есть только в одном из списков.

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

При изменении исходных данных кликните правой кнопкой по сводной таблице и выберите Обновить. Чтобы обновление происходило автоматически, используйте VBA-макрос:

Private Sub Worksheet_Change(ByVal Target As Range)

ThisWorkbook.RefreshAll

End Sub

Этот код добавляется в модуль листа (Alt+F11 → Microsoft Excel Objects → Лист1).

5. Продвинутое сравнение с Power Query

Для списков размером >10 000 строк или при необходимости сложной фильтрации (например, поиска частичных совпадений) используйте Power Query. Инструмент встроен в Excel 2016+ и позволяет объединять списки как базы данных.

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

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

Power Query сохраняет все шаги преобразования, поэтому при обновлении исходных данных достаточно кликнуть Обновить все на вкладке Данные.

🧹 Удалите пустые строки в обоих списках

🔤 Приведите текст к одному регистру (например, =ПРОПИСН(A2))

📌 Убедитесь, что в столбцах нет объединённых ячеек

🔢 Преобразуйте диапазоны в умные таблицы (Ctrl+T)

-->

6. Поиск частичных совпадений (с учётом опечаток)

Если списки содержат похожие, но не идентичные данные (например, "ООО Ромашка" vs "ИП Ромашка"), используйте нечёткий поиск. В Excel для этого есть надстройка Fuzzy Lookup (доступна в Microsoft 365) или функция ПОИСКПОЗ с подстановочными знаками.

Пример формулы для поиска элементов, где первые 3 символа совпадают:

=ЕСЛИ(СЧЁТЕСЛИ($B$2:$B$100; ЛЕВБ(A2;3)&"*")>0; "Есть похожее"; "")

Для более точного сравнения:

  • 🔠 Используйте =ФУЗЗИПОИСК(A2; $B$2:$B$100) (требует установки надстройки Fuzzy Lookup Add-In).
  • 📊 В Power Query применяйте Table.FuzzyGroup или Table.FuzzyJoin.
  • 🔍 Для ручной проверки отсортируйте оба списка по алфавиту и сравните визуально.

7. Автоматизация с помощью VBA-макроса

Если сравнение списков нужно выполнять регулярно, запишите макрос. Ниже пример кода, который выделяет цветом элементы из первого списка, отсутствующие во втором:

Sub CompareLists()

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

Set rng1 = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)

Set rng2 = Range("B2:B" & Cells(Rows.Count, 2).End(xlUp).Row)

For Each cell In rng1

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

cell.Interior.Color = RGB(255, 150, 150) ' Красный цвет

End If

Next cell

End Sub

Чтобы запустить макрос:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в модуль (Insert → Module).
  3. Вернитесь в Excel и нажмите Alt+F8, выберите CompareLists и кликните Выполнить.
⚠️ Внимание: Перед запуском макроса сохраните файл в формате .xlsm (с поддержкой макросов) и разрешите их выполнение в настройках безопасности Excel.

✅ Обрабатывают до 1 000 000 строк без зависаний

✅ Можно доработать под специфические условия (например, игнорировать регистр)

❌ Требуют базовых знаний VBA для модификации

❌ Не работают в веб-версии Excel-->

8. Сравнение списков в Google Таблицах

Если вы используете Google Sheets, принципы сравнения аналогичны, но с другими нюансами. Например, вместо ВПР удобнее применять ARRAYFORMULA с MATCH:

=ARRAYFORMULA(IF(ISNA(MATCH(A2:A; B2:B; 0)); "Отсутствует"; "Есть"))

Особенности Google Таблиц:

  • 🔄 Формулы обновляются автоматически при изменении данных.
  • 📊 Для сводных таблиц используйте QUERY (например, =QUERY(A2:B; "SELECT A WHERE A NOT IN (SELECT B)")).
  • 🔍 Функция REGEXMATCH позволяет искать частичные совпадения с регулярными выражениями.

Чтобы импортировать данные из Excel в Google Sheets без потерь, используйте формат .csv или Файл → Импорт → Загрузить.

Частые ошибки и как их избежать

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

Ошибка Причина Решение
Формула возвращает #Н/Д Нет точного совпадения Используйте ЕСЛИОШИБКА или проверьте регистр
Excel "завис" при расчётах Слишком много формул в большом диапазоне Замените формулы на Power Query или макрос
Сводная таблица не обновляется Изменился источник данных Проверьте диапазон в настройках сводной таблицы

Критическая ошибка: если в списках есть объединённые ячейки, большинство методов (включая ВПР и Power Query) будут работать неправильно. Перед сравнением разъедините ячейки (Главная → Объединить и центрировать → Отменить объединение).

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

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

Да. Откройте оба файла, в формуле укажите путь к второму файлу: =ВПР(A2; [Книга2.xlsx]Лист1!$B$2:$B$100; 1; ЛОЖЬ). Если путь содержит пробелы, заключите его в одинарные кавычки: '[Моя книга.xlsx]'!Лист1!$B$2.

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

Используйте вспомогательный столбец с конкатенацией: =A2&B2, затем сравнивайте его с аналогичным столбцом во втором списке. Или применяйте СЧЁТЕСЛИМН:

=ЕСЛИ(СЧЁТЕСЛИМН($D$2:$D$100; A2; $E$2:$E$100; B2)>0; "Есть"; "Нет")

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

Вероятные причины:

  • 🔤 Разный регистр (например, "иванов" vs "Иванов") — используйте =ВПР(ПРОПИСН(A2); ...).
  • 💾 Лишние пробелы — очистите данные функцией СЖПРОБЕЛЫ.
  • 🔢 Ячейки отформатированы как текст/число — приведите к одному формату.

Как сравнить списки по датам?

Преобразуйте даты в текстовый формат с помощью ТЕКСТ(A2; "дд.мм.гггг"), затем используйте стандартные методы сравнения. Или применяйте ДАТАЗНАЧ для приведения к числовому формату:

=ЕСЛИ(СЧЁТЕСЛИ($B$2:$B$100; ДАТАЗНАЧ(A2))>0; "Есть"; "Нет")

Можно ли сравнить списки без формул?

Да, используйте:

  • 🎨 Условное форматирование (раздел 1 статьи).
  • 📊 Сводные таблицы (раздел 4).
  • 🔄 Power Query (раздел 5) — не требует знания формул.