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

Сравнение данных между двумя столбцами — одна из самых частых задач при работе с таблицами. Выяснить, какие значения повторяются в столбце A и столбце B, может понадобиться для проверки дубликатов в базе клиентов, сверки инвентаризационных списков или анализа продаж по разным периодам. Но как это сделать быстро и без ошибок?

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

Если вам нужно не просто найти дубли, а выделить их цветом, извлечь в отдельный список или сравнить данные с учётом регистра, здесь тоже найдёте готовые решения. Все инструкции адаптированы для Excel 2010–2023 и Office 365, с учётом особенностей разных версий.

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

1. Простейший способ: формула ЕСЛИ + ПОИСКПОЗ

Для новичков самый понятный метод — использовать комбинацию функций ЕСЛИ и ПОИСКПОЗ (или MATCH в английской версии). Эта формула проверяет, есть ли значение из первого столбца во втором, и возвращает ДА/НЕТ или любое другое обозначение.

Допустим, у вас данные в столбцах A (список 1) и B (список 2). В ячейку C2 введите:

=ЕСЛИ(ЕЧИСЛО(ПОИСКПОЗ(A2; $B$2:$B$100; 0)); "Есть в B"; "Нет в B")

И протяните формулу вниз. Функция ПОИСКПОЗ ищет позицию значения из A2 в диапазоне B2:B100. Если находит — возвращает номер строки (числа), если нет — ошибку #Н/Д. Функция ЕЧИСЛО проверяет, является ли результат числом (то есть совпадение найдено).

Плюсы метода:

  • 🔹 Простота — понятно даже без опыта работы с формулами
  • 🔹 Гибкость — можно менять текстовые метки ("Есть в B"/"Нет в B") на любые другие
  • 🔹 Работает во всех версиях Excel, включая Excel 2010

Минусы:

  • 🔸 Медленно работает на больших таблицах (10 000+ строк)
  • 🔸 Не учитывает регистр (если нужно различать "Иванов" и "иванов", потребуется доработка)

2. Условное форматирование для визуального выделения дублей

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

Выделите диапазон A2:A100 (первый столбец), затем:

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

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

Почему формула срабатывает даже на пустые ячейки?

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

Нюанс: если в столбцах есть значения с пробелами в начале или конце (например, " Иванов " vs "Иванов"), условное форматирование их не распознает как дубли. Чтобы этого избежать, предварительно очистите данные с помощью функции СЖПРОБЕЛЫ.

3. Формула массива для извлечения всех совпадений в отдельный столбец

Часто требуется не просто найти дубли, а собрать их в отдельный список. Для этого подойдёт формула массива на основе ЕСЛИОШИБКА + ИНДЕКС + ПОИСКПОЗ. Предположим, вы хотите вывести все повторяющиеся значения из столбца A в столбец D, начиная с D2:

=ЕСЛИОШИБКА(ИНДЕКС($A$2:$A$100; МАЛЬЧ(ЕСЛИ(СЧЁТЕСЛИ($B$2:$B$100; $A$2:$A$100)>0; СТРОКА($A$2:$A$100)-1))); "")

Введите эту формулу в D2, затем нажмите Ctrl+Shift+Enter (в старых версиях Excel) или просто EnterExcel 365). Формула автоматически заполнит все совпадения, пропуская пустые строки.

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

  • 📌 СЧЁТЕСЛИ($B$2:$B$100; $A$2:$A$100)>0 — проверяет, какие значения из A есть в B
  • 📌 ЕСЛИ(...; СТРОКА(...)-1) — возвращает номера строк с совпадениями
  • 📌 МАЛЬЧ — сортирует номера строк по возрастанию
  • 📌 ИНДЕКС — извлекает значения из A по этим номерам

⚠️ Внимание: В Excel 365 формулы массива вводятся без Ctrl+Shift+Enter, но в более старых версиях (2010–2019) этот шаг обязателен. Если забыть нажать комбинацию, формула вернёт ошибку.

4. Сравнение с учётом регистра (точные совпадения)

По умолчанию Excel игнорирует регистр при сравнении текста. Если вам нужно найти точные совпадения (например, различать "Apple" и "apple"), используйте комбинацию функций НАЙТИ + ЕСЛИ:

=ЕСЛИ(ЕОШ(ПОИСК(A2; ТЕКСТ($B$2:$B$100))); "Нет"; "Есть")

Однако этот метод неидеален — он ищет вхождения (то есть найдёт "apple" в слове "pineapple"). Для точного сравнения лучше использовать VBA или Power Query (см. следующий раздел).

Альтернативный вариант — создать вспомогательный столбец с хэш-кодами:

=СЦЕПИТЬ(КОДСИМВ(ЛЕВСИМВ(A2)); КОДСИМВ(ПРАВСИМВ(A2)))

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

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

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

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

  1. Выделите исходные данные (столбцы A и B) и нажмите Данные → Из таблицы/диапазонаExcel 2016Power Query → Из таблицы).
  2. В открывшемся редакторе Power Query выделите столбец A, затем перейдите на вкладку Главная → Объединить запросы → Объединить.
  3. В окне объединения выберите:
    • 📊 Таблица 1: ваш текущий запрос (столбец A)
    • 📊 Таблица 2: тот же запрос (столбец B)
    • 📊 Тип объединения: Внутреннее (только совпадающие строки)
  • Нажмите ОК, затем удалите лишние столбцы (останется только список совпадений).
  • Нажмите Главная → Закрыть и загрузить, чтобы вернуть результат в Excel.
  • ⚠️ Внимание: При объединении Power Query создаёт новый запрос. Если исходные данные изменятся, обновите результат через Данные → Обновить все. В противном случае список дублей останется устаревшим.

    🔹 Преимущества Power Query:

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

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

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

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

    Инструкция:

    1. Создайте новый столбец C и введите формулу: =ЕСЛИ(СЧЁТЕСЛИ($B$2:$B$100; A2)>0; "Дубль"; "Уникально")
    2. Выделите все данные (включая столбец C) и нажмите Вставка → Сводная таблица.
    3. В настройках сводной таблицы:
      • 📌 Перетащите столбец A в область Строки
      • 📌 Перетащите столбец C в область Значения (он посчитает количество дублей)

    В результате вы получите таблицу, где будет видно, какие значения повторяются, и сколько раз они встречаются в каждом из столбцов.

    Значение Статус Количество
    Иванов И.И. Дубль 2
    Петров А.С. Уникально 1
    Сидорова Е.П. Дубль 1

    Когда использовать сводную таблицу:

    • 📊 Нужно не только найти дубли, но и проанализировать их распределение
    • 📊 Данные часто обновляются, и требуется динамический отчёт
    • 📊 Нужно группировать дубли по категориям (например, по регионам или датам)

    7. VBA-макрос для автоматизации (для продвинутых пользователей)

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

    • 🔹 Ищет все повторяющиеся значения между столбцами A и B
    • 🔹 Выделяет их жёлтым цветом
    • 🔹 Выводит список дублей на новый лист

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

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

      Dim ws As Worksheet

      Dim rngA As Range, rngB As Range, cell As Range

      Dim dict As Object

      Dim i As Long, lastRowA As Long, lastRowB As Long

      Dim resultRow As Long

      ' Создаём словарь для хранения уникальных значений из столбца B

      Set dict = CreateObject("Scripting.Dictionary")

      Set ws = ActiveSheet

      ' Определяем последние строки в столбцах A и B

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

      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

      Set rngA = ws.Range("A2:A" & lastRowA)

      For Each cell In rngA

      If dict.exists(cell.Value) Then

      cell.Interior.Color = RGB(255, 255, 0) ' Жёлтый цвет

      End If

      Next cell

      ' Создаём новый лист с результатами

      Dim resultSheet As Worksheet

      On Error Resume Next

      Set resultSheet = ThisWorkbook.Sheets("Дубли")

      On Error GoTo 0

      If resultSheet Is Nothing Then

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

      resultSheet.Name = "Дубли"

      Else

      resultSheet.Cells.Clear

      End If

      ' Записываем заголовки

      resultSheet.Cells(1, 1).Value = "Значение"

      resultSheet.Cells(1, 2).Value = "Столбец A (строка)"

      resultSheet.Cells(1, 3).Value = "Столбец B (строка)"

      ' Ищем и записываем дубли

      resultRow = 2

      For i = 2 To lastRowA

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

      resultSheet.Cells(resultRow, 1).Value = ws.Cells(i, 1).Value

      resultSheet.Cells(resultRow, 2).Value = i

      ' Ищем первую строку в B с таким значением

      For j = 2 To lastRowB

      If ws.Cells(j, 2).Value = ws.Cells(i, 1).Value Then

      resultSheet.Cells(resultRow, 3).Value = j

      Exit For

      End If

      Next j

      resultRow = resultRow + 1

      End If

      Next i

      MsgBox "Поиск дублей завершён! Результаты на листе 'Дубли'.", vbInformation

      End Sub

    4. Закройте редактор и запустите макрос через Вид → Макросы → FindDuplicates → Выполнить.

    ⚠️ Внимание: Перед первым запуском макроса Excel может заблокировать его выполнение с сообщением о безопасности. Разрешите выполнение макросов в Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов (выберите Включить все макросы или Отключить все макросы с уведомлением).

    FAQ: Частые вопросы о поиске дублей в Excel

    Можно ли найти дубли между столбцами в Google Таблицах?

    Да, в Google Sheets работают те же принципы, что и в Excel. Например, формула для поиска совпадений будет такой:

    =IF(COUNTIF(B:B; A2)>0; "Есть в B"; "Нет в B")

    А для условного форматирования используйте правило с формулой =COUNTIF(B:B; A2)>0. Основное отличие — в Google Sheets нет Power Query, но зато есть встроенная функция QUERY для сложных запросов.

    Как найти дубли, если данные в столбцах отсортированы по-разному?

    Порядок данных не влияет на результат. Все методы из статьи (формулы, Power Query, VBA) работают независимо от сортировки. Главное — правильно указать диапазоны. Например, формула =СЧЁТЕСЛИ($B$2:$B$100; A2) найдёт совпадения даже если значения в B расположены хаотично.

    Почему формула ПОИСКПОЗ не находит совпадения, хотя они есть?

    Чаще всего это происходит из-за:

    • 🔸 Лишних пробелов — используйте СЖПРОБЕЛЫ для очистки данных.
    • 🔸 Разного регистра — приведите текст к одному регистру с помощью ПРОПИСН или СТРОЧН.
    • 🔸 Скрытых символов (например, неразрывный пробел) — замените их через ЗАМЕНИТЬ.
    • 🔸 Разных форматов ячеек (текст vs число) — проверьте формат через Формат ячеек.

    Чтобы диагностировать проблему, добавьте вспомогательный столбец с формулой =ТИП(A2). Она вернёт 1 для чисел и 2 для текста.

    Можно ли сравнить более двух столбцов одновременно?

    Да. Например, чтобы найти значения, которые повторяются в трёх столбцах (A, B и C), используйте формулу:

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

    Для Power Query объедините запросы последовательно: сначала сравните A и B, затем результат сравните с C.

    Как ускорить поиск дублей в таблице на 50 000+ строк?

    Для больших данных:

    • 🚀 Используйте Power Query — он оптимизирован для обработки миллионов строк.
    • 🚀 Преобразуйте данные в таблицу Excel (Ctrl + T), а затем применяйте формулы. Таблицы обрабатываются быстрее обычных диапазонов.
    • 🚀 Отключите автоматический пересчёт формул: Формулы → Параметры вычислений → Вручную (не забудьте включить обратно после работы!).
    • 🚀 Для VBA-макросов отключите обновление экрана в начале кода:
      Application.ScreenUpdating = False