Поиск одинаковых ячеек в разных столбцах Excel: от простых формул до продвинутых методов

Работа с большими таблицами в Microsoft Excel часто требует поиска повторяющихся данных — будь то проверка на дубликаты в базе клиентов, сверка прайс-листов или анализ транзакций. Но что делать, если одинаковые значения разбросаны по разным столбцам? Стандартные функции вроде УДАЛИТЬ ДУБЛИКАТЫ здесь бессильны: они ищут повторы только в пределах одного столбца или строки.

В этой статье вы найдёте 7 проверенных методов — от элементарных формул до автоматизированных решений с Power Query. Мы разберём, как выделить совпадения визуально, извлечь их в отдельный список или даже удалить с сохранением уникальных записей. Все примеры адаптированы для Excel 2010–2023 и Office 365, с учётом особенностей каждой версии.

Особое внимание уделим трем ключевым сценариям:

  • 🔍 Поиск точных совпадений (например, одинаковые артикулы в столбцах A и D)
  • 📊 Сравнение с учётом регистра (когда "Иванов" и "иванов" считаются разными значениями)
  • 🔄 Динамическая сверка (автоматическое обновление результатов при изменении исходных данных)

Прежде чем переходить к инструкциям, ответьте на один вопрос — это поможет нам сфокусироваться на самых актуальных для вас методах:

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

1. Простейший способ: условное форматирование

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

Допустим, у вас есть два столбца с данными: A2:A100 (список товаров от поставщика 1) и C2:C100 (список от поставщика 2). Чтобы найти совпадения:

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

Теперь все ячейки в столбце A, которые имеют совпадения в столбце C, будут подсвечены. Важно: формула чувствительна к регистру — "Товар1" и "товар1" будут считаться разными значениями.

2. Формулы для поиска дубликатов: СЧЁТЕСЛИ, ВПР, ИНДЕКС-ПОИСКПОЗ

Когда нужно не только выделить, но и получить список совпадений или их количество, на помощь приходят формулы. Рассмотрим три варианта — от самого простого к продвинутому.

2.1. СЧЁТЕСЛИ для подсчёта совпадений

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

=СЧЁТЕСЛИ($C$2:$C$100; A2)

Если результат > 0 — совпадение есть. Чтобы автоматически вывести "ДА"/"НЕТ", оберните формулу в ЕСЛИ:

=ЕСЛИ(СЧЁТЕСЛИ($C$2:$C$100; A2)>0; "ДА"; "НЕТ")

2.2. ВПР для извлечения совпадающих данных

Функция ВПР (или VLOOKUP в английской версии) позволяет найти значение в одном столбце и вернуть соответствующее значение из другого. Например, если в столбце A у вас артикулы, а в C — цены, и нужно проверить, есть ли артикул из A2 в столбце E (другой прайс-лист), используйте:

=ЕСЛИОШИБКА(ВПР(A2; $E$2:$F$100; 2; ЛОЖЬ); "Нет совпадения"; "Есть в прайсе")

Здесь ЕСЛИОШИБКА обрабатывает случай, когда совпадение не найдено.

2.3. ИНДЕКС-ПОИСКПОЗ для гибкого поиска

Комбинация ИНДЕКС + ПОИСКПОЗ более универсальна, чем ВПР, так как позволяет искать совпадения в любом столбце, а не только в первом. Например, чтобы найти позицию товара из A2 в диапазоне C2:C100:

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

Если результат не #Н/Д, то совпадение есть. Чтобы вернуть само значение (например, цену из соседнего столбца D), используйте:

=ЕСЛИОШИБКА(ИНДЕКС($D$2:$D$100; ПОИСКПОЗ(A2; $C$2:$C$100; 0)); "Нет данных")
Почему ПОИСКПОЗ лучше ВПР?

Функция ПОИСКПОЗ (или MATCH) имеет три ключевых преимущества:

1. Работает с данными, расположенными справа от искомого столбца (в отличие от ВПР, который ищет только влево).

2. Быстрее обрабатывает большие массивы данных.

3. Может использоваться для двустороннего поиска (например, найти совпадения в обоих направлениях между столбцами A и C).

3. Поиск дубликатов с учётом регистра

По умолчанию Excel игнорирует регистр при сравнении текста: "Иванов" и "иванов" для него идентичны. Если это критично (например, при работе с логинами или серийными номерами), используйте массивные формулы или Power Query.

3.1. Формула с ПОИСКПОЗ и ТОЧНОЕ

Функция ТОЧНОЕ (или EXACT) сравнивает строки с учётом регистра. Чтобы найти все совпадения между столбцами A и C:

=ЕСЛИ(СУММПРОИЗВ(--(ТОЧНОЕ(A2; $C$2:$C$100))); "Есть совпадение"; "")

Это массивная формула — после ввода нажмите Ctrl+Shift+EnterExcel 365 достаточно просто Enter).

3.2. Power Query для чувствительного к регистру поиска

Если данных много (тысячи строк), формулы будут тормозить. В этом случае:

  1. Выделите исходные данные и нажмите Данные → Из таблицы/диапазонаExcel 2016+).
  2. В редакторе Power Query добавьте пользовательский столбец с формулой:
    = Table.AddColumn(#"Предыдущий шаг", "Совпадение", each List.Contains(Text.Split(Text.Upper([Столбец1]), "#(lf)"), Text.Upper([Столбец2])))
  3. Замените Столбец1 и Столбец2 на реальные имена ваших столбцов.

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

🔤 Убедитесь, что в заголовках нет пробелов или специальных символов

🔍 Проверьте данные на наличие скрытых пробелов (=ПРОБЕЛЫ(A2)=A2)

📊 Сохраните резервную копию файла перед импортом

-->

4. Поиск частичных совпадений (неточный поиск)

Иногда требуется найти не точные дубликаты, а ячейки с общим фрагментом текста. Например, в одном столбце "ООО Ромашка", а в другом — "Ромашка ЛТД". Для этого подойдут функции ПОИСК, НАЙТИ или регулярные выражения (в Power Query).

4.1. Формула с ПОИСК

Чтобы проверить, содержится ли текст из A2 в любой ячейке столбца C:

=ЕСЛИ(СУММПРОИЗВ(--(НЕ(ЕОШИБКА(ПОИСК(A2; $C$2:$C$100))))); "Есть частичное совпадение"; "")

Для обратного поиска (проверки, содержится ли фрагмент из C2 в A2) поменяйте местами диапазоны.

4.2. Power Query: разделить текст и сравнить

Если нужно найти совпадения по первым словам или определённым символам:

  1. Загрузите данные в Power Query.
  2. Добавьте пользовательский столбец, извлекающий нужный фрагмент (например, первые 5 символов):
    = Text.Start([Столбец1], 5)
  3. Сравните полученные значения с другим столбцом.

5. Автоматизация: макрос для поиска дубликатов

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

Sub FindDuplicatesAcrossColumns()

Dim rng1 As Range, rng2 As Range

Dim cell1 As Range, cell2 As Range

Dim color As Long: color = RGB(255, 150, 150) 'Светло-красный

'Задайте диапазоны для сравнения (например, A2:A100 и C2:C100)

Set rng1 = Range("A2:A100")

Set rng2 = Range("C2:C100")

'Сброс предыдущего форматирования

rng1.Interior.ColorIndex = xlNone

rng2.Interior.ColorIndex = xlNone

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

For Each cell1 In rng1

For Each cell2 In rng2

If cell1.Value = cell2.Value Then

cell1.Interior.Color = color

cell2.Interior.Color = color

End If

Next cell2

Next cell1

End Sub

Чтобы использовать этот макрос:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Измените диапазоны Range("A2:A100") и Range("C2:C100") на свои.
  4. Запустите макрос нажатием F5.

Преимущество макроса: он работает в сотни раз быстрее формул на больших массивах данных (10 000+ строк). Однако требует базовых знаний VBA для адаптации под свои задачи.

If cell1.Value <> "" And cell2.Value <> "" Then
-->

6. Продвинутый метод: Power Query для сложных сравнений

Power Query (или Get & Transform в Excel 2016+) — это инструмент для сложной обработки данных, который справится даже с миллионом строк. Рассмотрим, как с его помощью найти дубликаты между двумя столбцами и выгрузить результат в новую таблицу.

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

  1. Загрузите данные: выделите оба столбца (например, A1:C100) и нажмите Данные → Из таблицы/диапазона.
  2. Объедините таблицы:
    • Перейдите на вкладку Главная → Объединить запросы → Объединить.
    • Выберите первый столбец (A) и второй столбец (C).
    • Укажите тип объединения: Внутреннее (только совпадения) или Левое внешнее (все данные из первого столбца + совпадения).
  • Настройте вывод: в появившемся окне выберите, какие столбцы показать в результате (например, оба исходных + флаг совпадения).
  • Загрузите результат на новый лист.
  • 6.2. Пример на M-коде

    Если вам нужно автоматизировать процесс, вот готовый код для Power Query, который находит совпадения между столбцами Column1 и Column2:

    let
    

    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],

    // Находим дубликаты между Column1 и Column2

    Duplicates = Table.SelectRows(Source, each List.Contains(List.Buffer(Table.Column(Source, "Column2")), [Column1])),

    // Добавляем столбец с пометкой "Дубликат"

    Result = Table.AddColumn(Duplicates, "Статус", each "Дубликат в Column2")

    in

    Result

    Этот код создаст новую таблицу только с дублирующимися строками.

    6.3. Сравнение нескольких столбцов

    Чтобы найти совпадения между тремя и более столбцами, используйте функцию Table.Group:

    let
    

    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],

    // Группируем по значению и считаем количество вхождений

    Grouped = Table.Group(Source, {"Column1"}, {{"Count", each Table.RowCount(_), type number}}),

    // Фильтруем только дубликаты (встречаются более 1 раза)

    Duplicates = Table.SelectRows(Grouped, each [Count] > 1)

    in

    Duplicates

    Как ускорить работу Power Query?

    1. Отключите загрузку промежуточных данных: в настройках запроса снимите галочку Включить загрузку в модель данных, если она не нужна.

    2. Используйте буферизацию: оберните столбцы в List.Buffer (как в примере выше) — это ускорит повторные обращения к данным.

    3. Разделите большие запросы: если данных >100 000 строк, разбейте их на части и объедините результаты потом.

    7. Типичные ошибки и как их избежать

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

    Ошибка Причина Решение
    Формула не находит очевидные дубликаты В ячейках есть скрытые пробелы или непечатаемые символы Используйте =ПРОБЕЛЫ(A2)=A2 для проверки. При необходимости очистите данные: =СЖПРОБЕЛЫ(A2)
    Условное форматирование не работает Неверно указан абсолютный/относительный диапазон в формуле Проверьте символы $ в формуле. Например, $C$2:$C$100 (фиксированный диапазон) vs C2:C100 (относительный)
    Макрос выдаёт ошибку 1004 Диапазоны в коде не соответствуют реальным данным Обновите диапазоны в макросе (например, Range("A2:A100") на Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row) для динамического определения последней строки)
    Power Query "зависает" Слишком много данных или неоптимизированный запрос Разбейте данные на части или используйте Table.Buffer для ускорения
    Формулы массива тормозят файл Слишком много вычислений на большом диапазоне Замените формулы на Power Query или макрос, либо сузьте диапазон (например, A2:A1000 вместо A:A)

    ⚠️ Внимание: Если вы работаете с данными, импортированными из CSV или базы данных, проверьте их на наличие невидимых символов (например, табуляции или переводов строк). Для этого используйте функцию =КОДСИМВ(ЛЕВСИМВ(A2)) — она вернёт код первого символа в ячейке. Нормальные буквы и цифры имеют коды 48–57 (цифры), 65–90 (заглавные буквы), 97–122 (строчные).

    Ещё одна распространённая проблема — разные форматы ячеек. Например, число "1000" и текст "1000" для Excel — разные значения. Чтобы привести данные к одному формату, используйте:

    • 📌 Для чисел: =ЗНАЧЕН(A2)
    • 📌 Для текста: =ТЕКСТ(A2; "0") (преобразует число в текст)

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

    Можно ли найти дубликаты в разных листах?

    Да. В формулах укажите имя листа перед диапазоном, например:

    =СЧЁТЕСЛИ(Лист2!$A$2:$A$100; A2)

    В Power Query загрузите оба листа как отдельные таблицы, затем объедините их (Объединить запросы).

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

    Используйте динамические диапазоны. Например, для столбца A (где данные до последней заполненной ячейки):

    =СЧЁТЕСЛИ($C$2:INDEX($C:$C; СЧЁТЗ($C:$C)); A2)

    Или в Power Query объедините таблицы по ключевому столбцу без привязки к количеству строк.

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

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

    • 🔹 Четвёртый аргумент ВПР установлен в ИСТИНА (поиск приблизительный). Замените на ЛОЖЬ.
    • 🔹 В искомом столбце есть скрытые символы (пробелы, неразрывные пробелы). Проверьте функцией =ДЛСТР(A2) — если длина больше ожидаемой, очистите данные.
    • 🔹 Данные в разных форматах (текст vs число). Используйте =ТИП(A2) для проверки.
    Как удалить строки, где есть дубликаты в разных столбцах?

    Способ 1: Фильтрация:

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

    Способ 2: Power Query:

    let
    

    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],

    // Удаляем строки, где Column1 встречается в Column2

    Filtered = Table.SelectRows(Source, each not List.Contains(Table.Column(Source, "Column2"), [Column1]))

    in

    Filtered

    Можно ли автоматически обновлять список дубликатов?

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

    • 📊 Таблицы Excel: преобразуйте диапазон в таблицу (Ctrl+T), тогда формулы будут автоматически расширяться.
    • 🔄 Power Query: настройте запрос и обновите его по кнопке Обновить все (или по расписанию в Excel 365).
    • 🖥️ Макрос: добавьте вызов процедуры в событие Worksheet_Change, чтобы она запускалась при изменении данных.