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

Почему стандартный поиск не работает и что делать

Вы когда-нибудь пытались вручную сравнить два списка в Excel, прокручивая оба листа одновременно? Это не только утомительно, но и чревато ошибками — особенно если данных сотни или тысячи строк. Даже функция НАЙТИ (FIND) здесь бессильна: она ищет текст внутри одной ячейки, но не сравнивает диапазоны.

Проблема усложняется, если:

  • 📄 Листы имеют разное количество строк или столбцов
  • 🔢 Данные отсортированы по-разному (например, по алфавиту vs. по дате)
  • 📊 Нужно найти не точные совпадения, а частичные (например, "Иванов И.А." и "Иванов Иван")
  • 🔄 Требуется не просто выделить совпадения, а перенести их на третий лист

К счастью, в Excel есть минимум 5 способов автоматизировать это — от элементарных формул до продвинутых инструментов вроде Power Query. Выбор метода зависит от объема данных и того, нужно ли вам одноразовое решение или шаблон для регулярного использования.

📊 Как часто вам приходится сравнивать листы в Excel?
Ежедневно
Раз в неделю
Редко, но методично
Первый раз столкнулся

Способ 1: Формула ВПР (VLOOKUP) для точных совпадений

Если вам нужно проверить, есть ли значения из Листа 1 в Листе 2, и вывести результат в отдельный столбец, ВПР (VLOOKUP) — самый простой вариант. Эта функция ищет значение в первом столбце указанного диапазона и возвращает данные из ячейки того же ряда.

Допустим, у вас:

  • 📌 На Листе 1 в столбце A — список товаров (диапазон A2:A100)
  • 📌 На Листе 2 в столбце B — другой список (диапазон B2:B200)
  • 📌 Нужно в столбце C на Листе 1 отметить, какие товары есть на Листе 2

Формула для ячейки C2 на Листе 1:

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

Разберем ее:

  • 🔍 ВПР(A2;Лист2!B:B;1;ЛОЖЬ) — ищет значение из A2 в столбце B на Листе 2. Параметр ЛОЖЬ (FALSE) гарантирует поиск точного совпадения.
  • ⚠️ ЕСЛИОШИБКА (IFERROR) заменяет ошибку #Н/Д на текст "Нет", если совпадений нет.
⚠️ Внимание: ВПР работает только если искомое значение находится в первом столбце диапазона поиска. Если ваши данные расположены иначе, используйте ИНДЕКС+ПОИСКПОЗ (см. Способ 2).

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

Проверьте отсутствие лишних пробелов (используйте функцию СЖПРОБЕЛЫ)

Зафиксируйте диапазон поиска знаками $ (например, Лист2!$B:$B)

-->

Способ 2: Комбинация ИНДЕКС+ПОИСКПОЗ для гибкого поиска

Если ВПР кажется слишком ограниченной, комбинация ИНДЕКС (INDEX) и ПОИСКПОЗ (MATCH) дает больше свободы. Например, она позволяет:

  • 🔄 Искать значение в любом столбце (не только в первом)
  • 📊 Возвращать данные из другого столбца (например, найти цену товара по его названию)
  • 🔍 Работать с несортрованными данными

Предположим, на Листе 1 у вас в столбце A — артикулы товаров, а на Листе 2 в столбце C — артикулы, а в столбце D — цены. Чтобы найти цену для каждого артикула с Листа 1, используйте:

=ЕСЛИОШИБКА(ИНДЕКС(Лист2!$D:$D; ПОИСКПОЗ(A2; Лист2!$C:$C; 0)); "Нет данных")

Как это работает:

  1. ПОИСКПОЗ(A2; Лист2!$C:$C; 0) — находит позицию артикула из A2 в столбце C на Листе 2.
  2. ИНДЕКС(Лист2!$D:$D; ...) — возвращает значение из столбца D (цены) на той же строке.
ФункцияПреимуществаНедостатки
ВПРПростота, быстрота для небольших данныхТолько первый столбец, негибкая
ИНДЕКС+ПОИСКПОЗГибкость, работает с любыми столбцамиСложнее для новичков
СЧЁТЕСЛИПодсчет повторений, не требует точного позиционированияНе возвращает сами данные, только количество

Не забудьте ввести ее как формулу массива (Ctrl+Shift+Enter в старых версиях Excel).-->

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

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

  • 🎨 Быстрого визуального анализа (например, найти дубли в двух списках)
  • 📅 Отчетов, где важно показать совпадения коллегам без формул
  • 🔍 Предварительной проверки перед deeper-анализом

Инструкция:

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

Теперь все ячейки, значения которых есть на Листе 2, будут подсвечены. Чтобы найти уникальные значения (те, которых нет на втором листе), используйте ту же формулу, но с условием =СЧЁТЕСЛИ(Лист2!$A:$A; A2)=0 и красным цветом.

⚠️ Внимание: Условное форматирование не обновляется автоматически при изменении данных на Листе 2. После редактирования второго листа нажмите F9, чтобы пересчитать формулы.
Как сравнить два листа с разными заголовками?

Если заголовки столбцов на листах не совпадают (например, на Листе 1 "Код товара", а на Листе 2 "Артикул"), используйте вспомогательный столбец с формулой =ЕСЛИ(Лист1!A2=Лист2!B2; "Совпадает"; ""), где Лист1!A2 и Лист2!B2 — ячейки с эквивалентными данными. Затем примените условное форматирование к этому столбцу.

Способ 4: Power Query для сложных сравнений (Excel 2016+)

Если вам нужно:

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

Power Query (в Excel 2016+ называется Получить данные) станет вашим спасением. Этот инструмент позволяет:

  • 🔗 Объединять таблицы по ключевым столбцам (как JOIN в SQL)
  • 🧹 Очищать данные перед сравнением (удалять пробелы, исправлять регистр)
  • 📤 Экспортировать результат на новый лист или в сводную таблицу

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

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

    Способ 5: Макрос VBA для автоматизации (продвинутый уровень)

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

    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

    Dim matchFound As Boolean

    Dim resultRow As Long

    ' Настройте имена листов здесь

    Set ws1 = ThisWorkbook.Sheets("Лист1")

    Set ws2 = ThisWorkbook.Sheets("Лист2")

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

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

    ' Заголовки для результата

    ws1.Range("A1:Z1").Copy wsResult.Range("A1")

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

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

    resultRow = 2

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

    For i = 2 To lastRow1

    For j = 2 To lastRow2

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

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

    resultRow = resultRow + 1

    Exit For

    End If

    Next j

    Next i

    MsgBox "Совпадения найдены и скопированы на лист 'Совпадения'!", vbInformation

    End Sub

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

    1. Нажмите Alt + F11, чтобы открыть редактор VBA.
    2. Вставьте код в новый модуль (Insert → Module).
    3. Замените "Лист1" и "Лист2" на реальные имена ваших листов.
    4. Запустите макрос (F5) — результат появится на новом листе "Совпадения".
    5. ⚠️ Внимание: Макросы работают только если файл сохранен в формате .xlsm (с поддержкой макросов). При открытии файла из ненадежного источника Excel заблокирует выполнение макросов — включите их в Файл → Параметры → Центр управления безопасностью → Параметры центра....

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

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

      ОшибкаПричинаРешение
      #Н/Д в формулахНет точного совпадения или опечаткаПроверьте данные на лишние пробелы (СЖПРОБЕЛЫ) и регистр (ПРОПИСН)
      Условное форматирование не работаетДиапазоны не зафиксированы знаками $Используйте абсолютные ссылки: Лист2!$A:$A вместо Лист2!A:A
      Power Query "не видит" данныеТаблицы не преобразованы в диапазоныВыделите данные и нажмите Ctrl+T, чтобы создать таблицу
      Макрос выдает ошибку 1004Лист с указанным именем не существуетПроверьте имена листов в коде (регистр важен!)

      Еще одна типичная проблема — разные форматы данных. Например, если на одном листе даты хранятся как текст ("01.01.2023"), а на другом — как даты (01.01.2023), Excel воспринимает их как разные значения. Решение:

      • 📅 Преобразуйте текст в даты с помощью ДАТАЗНАЧ (DATEVALUE)
      • 🔢 Для чисел используйте ЗНАЧЕН (VALUE)

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

      Можно ли сравнить два листа в Excel Online?

      В веб-версии Excel доступны только базовые функции: ВПР, СЧЁТЕСЛИ и условное форматирование. Power Query и макросы VBA работают только в десктопной версии (Excel 2016 и новее). Для сложных задач скачайте файл и откройте его в полной версии программы.

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

      Используйте формулу массива с ИНДЕКС+ПОИСКПОЗ и условием УМНОЖ:

      =ИНДЕКС(Лист2!$D:$D; ПОИСКПОЗ(1; (Лист2!$A:$A=A2)*(Лист2!$B:$B=B2); 0))

      Эта формула ищет строку, где одновременно совпадают значения в столбцах A и B на обоих листах. Не забудьте ввести ее как формулу массива (Ctrl+Shift+Enter в Excel 2019 и старше).

      Как найти частичные совпадения (например, "Иванов" и "Иванов И.А.")?

      Для поиска подстрок используйте функции ПОИСК (SEARCH) или НАЙТИ (FIND) в комбинации с ЕСЛИ:

      =ЕСЛИ(ЕЧИСЛО(ПОИСК(A2; Лист2!B:B)); "Есть совпадение"; "Нет")

      Обратите внимание: ПОИСК игнорирует регистр, а НАЙТИ — нет. Для точного поиска с учетом регистра используйте НАЙТИ.

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

      Да, но с оговорками:

      • 🔹 В формулах укажите полный путь: =ВПР(A2; [Книга2.xlsx]Лист1!$A:$B; 2; ЛОЖЬ). Обе книги должны быть открыты.
      • 🔹 В Power Query можно загрузить данные из внешней книги через Получить данные → Из файла → Из книги Excel.
      • 🔹 Макросы VBA тоже поддерживают работу с внешними файлами, но требуют указания полного пути:
      Workbooks("Книга2.xlsx").Sheets("Лист1").Range("A1:A100")
      Как сохранить результаты сравнения для дальнейшей работы?

      Способы сохранения зависят от метода:

      • 📋 Формулы: Скопируйте столбец с результатами и вставьте как Значения (Правая кнопка → Специальная вставка → Значения).
      • 🎨 Условное форматирование: Используйте Фильтр по цвету, чтобы отобразить только выделенные ячейки, затем скопируйте их.
      • 🔄 Power Query: Результат автоматически сохраняется на новом листе. При обновлении данных он перезапишется.
      • 🤖 Макросы: Код выше уже создает отдельный лист "Совпадения" — просто сохраните файл.