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

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

В этой статье мы разберем пошаговые методы для всех уровней пользователей: от новичков, которые только осваивают формулы, до опытных аналитиков, которым нужны динамические отчеты. Вы узнаете, как выделить совпадения цветом, извлечь уникальные записи, найти отсутствующие ФИО в одном из списков, а также избежать типичных ошибок при работе с русскими фамилиями (например, с пробелами или регистром). Все инструкции адаптированы для Excel 2016–2023 и Microsoft 365, включая веб-версию.

Прежде чем приступить, проверьте, что ваши данные подготовлены правильно: каждый список ФИО должен находиться в отдельном столбце (например, A2:A100 и C2:C100), а фамилии, имена и отчества записаны в одном формате (например, "Иванов Петр Сидорович", а не "Иванов П.С."). Если форматы разные — используйте функцию =ПОДСТАВИТЬ() или инструмент Текст по столбцам для унификации.

📊 Как часто вам приходится сравнивать списки ФИО в Excel?
Ежедневно
Раз в неделю
Раз в месяц
Редее
Никогда

1. Условное форматирование: быстрое визуальное сравнение

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

Вот как это сделать:

  • 📌 Выделите первый список ФИО (например, столбец A с заголовком).
  • 🎨 Перейдите на вкладку Главная → Условное форматирование → Создать правило.
  • 🔍 Выберите тип правила: Использовать формулу для определения форматируемых ячеек.
  • 📝 Введите формулу:
    =СЧЁТЕСЛИ($C$2:$C$100; A2)>0

    (где $C$2:$C$100 — диапазон второго списка, а A2 — первая ячейка первого списка).

  • 🎨 Нажмите Формат, выберите цвет заливки (например, зеленый для совпадений) и сохраните правило.

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

⚠️ Внимание: Условное форматирование чувствительно к регистру! Если в одном списке записано "Иванов Иван Иванович", а в другом — "ИВАНОВ Иван Иванович", Excel воспримет их как разные значения. Используйте функцию =ПРОПИСН() или =СТРОЧН() для унификации регистра перед сравнением.

2. Функция ВПР (VLOOKUP) для поиска совпадений

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

Допустим, у вас есть два списка:

  • 📋 Список 1 (столбец A): ФИО сотрудников на текущий месяц.
  • 📋 Список 2 (столбец C): ФИО сотрудников за прошлый месяц.

Чтобы найти, кто из текущего списка был и в прошлом, введите в ячейку B2 (рядом с первым ФИО) формулу:

=ЕСЛИОШИБКА(ВПР(A2; $C$2:$C$100; 1; ЛОЖЬ); "Нет в прошлом списке")

Эта формула вернет само ФИО, если оно найдено, или текст "Нет в прошлом списке", если совпадений нет.

ФИО (текущий список) Результат ВПР ФИО (прошлый список)
Иванов Петр Сидорович Иванов Петр Сидорович Иванов Петр Сидорович
Смирнова Анна Михайловна Нет в прошлом списке Петров Алексей Владимирович
Кузнецов Дмитрий Олегович Кузнецов Дмитрий Олегович Кузнецов Дмитрий Олегович

Для обратного сравнения (кто был в прошлом списке, но отсутствует в текущем) используйте ту же формулу, но поменяйте диапазоны местами. Например, в ячейке D2:

=ЕСЛИОШИБКА(ВПР(C2; $A$2:$A$100; 1; ЛОЖЬ); "Нет в текущем списке")

Почему ВПР может не найти совпадение, даже если ФИО есть в обоих списках?

Причина обычно кроется в "скрытых" символах: пробелах в начале/конце ячейки, неразрывных пробелах (Alt+0160), или разных регистрах. Чтобы очистить данные, используйте функцию =СЖПРОБЕЛЫ() или комбинацию =ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2; CHAR(160); " "); " "; " ") для замены всех типов пробелов.

3. Функции ИНДЕКС+ПОИСКПОЗ для гибкого сравнения

Комбинация ИНДЕКС + ПОИСКПОЗ (INDEX+MATCH) — более мощная альтернатива ВПР. Она позволяет:

  • 🔍 Искать данные не только в первом столбце, но и в любом другом.
  • ⚡ Работать быстрее на больших массивах данных.
  • 🔄 Избегать ошибок, если столбцы перемещаются.

Предположим, у вас есть два списка ФИО в столбцах A и C, и вам нужно найти позиции совпадений. Введите в ячейку B2 формулу:

=ЕСЛИОШИБКА(ИНДЕКС($C$2:$C$100; ПОИСКПОЗ(A2; $C$2:$C$100; 0)); "Отсутствует")

Эта формула вернет само ФИО из второго списка, если оно найдено, или текст "Отсутствует".

Чтобы получить номер строки, где найдено совпадение (полезно для дальнейшей обработки), используйте просто:

=ПОИСКПОЗ(A2; $C$2:$C$100; 0)

Если функция возвращает ошибку #Н/Д, значит ФИО в втором списке нет.

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

4. Power Query: профессиональный инструмент для больших данных

Если вам нужно сравнить списки из тысяч строк, регулярно обновлять данные или создавать сложные отчеты, Power Query (вкладка Данные → Получить данные) станет вашим главным помощником. Этот инструмент позволяет:

  • 🔄 Объединять таблицы по ключевым полям (в нашем случае — по ФИО).
  • 📊 Фильтровать уникальные, повторяющиеся или отсутствующие записи.
  • 🔗 Автоматически обновлять результаты при изменении исходных данных.

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

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

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

    Сводные таблицы (Вставка → Сводная таблица) — универсальный инструмент для анализа данных, который можно адаптировать и для сравнения списков. Этот метод полезен, если вам нужно не только найти совпадения, но и посчитать их количество, сгруппировать по категориям (например, по отделам) или визуализировать результаты.

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

    1. Объедините оба списка ФИО в одну таблицу, добавив столбец с источником (например, "Список 1" и "Список 2").
    2. Создайте сводную таблицу, перетащив поле ФИО в область Строки, а поле Источник — в область Значения (настройте подсчет количества).
    3. Отфильтруйте сводную таблицу по значению "2" в столбце Количество по Источник — это будут ФИО, которые есть в обоих списках.

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

    ФИО Количество в Списке 1 Количество в Списке 2 Статус
    Иванов Петр Сидорович 1 1 Есть в обоих
    Смирнова Анна Михайловна 1 0 Только в Списке 1
    Петров Алексей Владимирович 0 1 Только в Списке 2
    ⚠️ Внимание: Если в ваших данных есть полные тезки (например, два "Иванова Ивана Ивановича"), сводная таблица не сможет их различить. В этом случае добавьте в исходные данные уникальные идентификаторы (например, табельные номера или email) и используйте их для сравнения вместо ФИО.

    6. Макросы VBA для автоматизации сравнения

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

    Пример макроса, который выделяет цветом совпадения между двумя списками:

    Sub CompareLists()
    

    Dim ws As Worksheet

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

    Dim i As Long, lastRow1 As Long, lastRow2 As Long

    Set ws = ActiveSheet

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

    lastRow2 = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row

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

    Set rng2 = ws.Range("C2:C" & lastRow2)

    For Each cell In rng1

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

    cell.Interior.Color = RGB(144, 238, 144) ' Светло-зеленый

    Else

    cell.Interior.Color = RGB(255, 182, 193) ' Светло-красный

    End If

    Next cell

    End Sub

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

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

          ' Добавляем в конец предыдущего макроса
      

      ws.Range("E1").Value = "Совпадения"

      ws.Range("E2").Resize(lastRow1 - 1).Formula = "=IF(COUNTIF($C$2:$C$" & lastRow2 & ", A2)>0, A2, """")"

      Как защитить макрос от ошибок при пустых ячейках?

      Добавьте в начало макроса проверку на пустые значения:

      If cell.Value = "" Then GoTo NextIteration

      и метку NextIteration: перед Next cell. Это предотвратит ошибки при обработке пустых строк.

      7. Онлайн-инструменты и надстройки для Excel

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

      • 🌐 Онлайн-сервисы:
        • 🔹 TextCompare — сравнивает два текста и выделяет различия.
        • 🔹 DiffChecker — подходит для небольших списков (до 1000 строк).
      • 📊 Надстройки для Excel:
        • 🔹 Kutools for Excel — плагин с функцией Select Same & Different Cells.
        • 🔹 Ablebits — позволяет сравнивать столбцы и выделять уникальные/повторяющиеся значения.

      Преимущества онлайн-инструментов:

      • ✅ Не требуют установки.
      • ✅ Поддерживают сравнение файлов разных форматов (Excel, CSV, TXT).
      • ✅ Визуализируют различия (например, выделяют удаленные/добавленные строки).

      Недостатки:

      • ❌ Ограничения по размеру файлов (обычно до 1–5 МБ).
      • ❌ Риск утечки конфиденциальных данных (если списки содержат персональную информацию).
      • ❌ Нет возможности автоматизировать процесс (придется загружать файлы вручную каждый раз).
      ⚠️ Внимание: Перед загрузкой данных в онлайн-сервисы убедитесь, что они не содержат конфиденциальной информации (паспортные данные, адреса, телефоны). Согласно ФЗ-152 "О персональных данных", передача таких сведений третьим лицам без согласия субъекта запрещена.

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

      Как сравнить списки, если ФИО записаны в разных форматах (например, "Иванов И.И." и "Иванов Иван Иванович")?

      Используйте Power Query или функцию =ЛЕВСИМВ() для извлечения фамилии и инициалов. Например, чтобы привести "Иванов Иван Иванович" к формату "Иванов И.И.", введите:

      =ЛЕВСИМВ(A2; ПОИСК(" "; A2)) & ЛЕВСИМВ(ПСТР(A2; ПОИСК(" "; A2)+1; 255); 1) & "." & ЛЕВСИМВ(ПСТР(A2; ПОИСК(" "; A2; ПОИСК(" "; A2)+1)+1; 255); 1) & "."

      Затем сравнивайте уже унифицированные данные.

      Можно ли сравнить списки в Google Таблицах?

      Да, все описанные методы (кроме Power Query и VBA) работают и в Google Sheets. Вместо ВПР используйте =VLOOKUP(), а для условного форматирования — Настройка формата → Условное форматирование. Для продвинутых задач в Google Sheets есть функция =QUERY(), аналог Power Query.

      Как сравнить списки, если в них есть опечатки (например, "Иванов" и "Ивановв")?

      Используйте функцию =ПОХОЖ() (FUZZY MATCH), которая оценивает сходство строк в процентах. Например:

      =ЕСЛИ(ПОХОЖ(A2; C2)>0,8; "Возможно совпадение"; "Нет совпадений")

      Значение 0,8 означает 80% сходства. Настройте порог под свои нужды.

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

      Если вы использовали формулы, скопируйте результаты и вставьте как Значения (Правка → Специальная вставка → Значения). Затем сохраните файл как Excel Binary Workbook (*.xlsb) или CSV. Для Power Query настройте экспорт в новую книгу на этапе загрузки данных.

      Почему Excel не находит совпадения, хотя ФИО есть в обоих списках?

      Частые причины:

      • 🔸 Скрытые символы: пробелы, табуляции, неразрывные пробелы (используйте =СЖПРОБЕЛЫ() и =ПЕЧСИМВ() для проверки).
      • 🔸 Разный регистр: "Иванов" ≠ "иванов" (используйте =ПРОПИСН() или =СТРОЧН()).
      • 🔸 Разные форматы ячеек: текст vs число (преобразуйте все в текст с помощью =ТЕКСТ()).