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

Работа с большими массивами данных в Microsoft Excel часто требует сравнения информации из разных столбцов. Возможно, вам нужно найти общие клиенты в двух базах, сопоставить списки товаров или выявить повторяющиеся записи. Поиск одинаковых значений в двух столбцах — одна из самых востребованных операций, но многие пользователи тратят на неё часы вручную, не зная простых автоматизированных методов.

В этой статье мы разберём 5 проверенных способов фильтрации совпадений: от базовых инструментов вроде условного форматирования до продвинутых формул массива и Power Query. Каждый метод подходит для разных сценариев — вы сможете выбрать оптимальный в зависимости от объёма данных и версии Excel (актуально для Excel 2010–2023 и Office 365).

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

1. Базовый метод: фильтр с функцией "Текстовый фильтр"

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

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

  1. Выделите диапазон с данными (включая оба столбца).
  2. Перейдите на вкладку Данные → Фильтр (или нажмите Ctrl+Shift+L).
  3. Откройте выпадающий список фильтра в первом столбце.
  4. Выберите Текстовые фильтры → Настраиваемый фильтр.

В открывшемся окне настройте правило:

  • 🔹 В первом поле выберите "равно".
  • 🔹 Во втором поле укажите ячейку из второго столбца (например, =B2).
  • 🔹 Нажмите ОК.

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

📊 Какой версии Excel вы пользуетесь?
Excel 2010-2016
Excel 2019
Office 365 (Microsoft 365)
Другая

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

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

Инструкция:

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

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

=СЧЁТЕСЛИ($B:$B; ПРОПИСН(A2))>0
⚠️ Внимание: Условное форматирование не работает корректно, если в ячейках содержатся ошибки (#Н/Д, #ЗНАЧ!). Предварительно исправьте их функцией =ЕОШИБКА().

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

Для гибкой фильтрации используйте формулы. Они позволяют не только найти совпадения, но и извлечь связанные данные (например, цены или IDs из второго столбца).

Способ 1: Простая проверка с СЧЁТЕСЛИ

В третьем столбце введите формулу:

=ЕСЛИ(СЧЁТЕСЛИ($B:$B; A2)>0; "Есть совпадение"; "")

Она отобразит текст "Есть совпадение" рядом с дублирующимися значениями.

Способ 2: Извлечение данных с ВПР

Если нужно вытащить значение из второго столбца для совпадающих строк:

=ЕСЛИОШИБКА(ВПР(A2; $B:$B; 1; 0); "")

Способ 3: Динамический массив (Excel 365)

Для современных версий подходит формула массива, возвращающая все совпадения:

=ФИЛЬТР(A2:A100; ПОИСКПОЗ(A2:A100; B2:B100; 0)<>0)
Формула Применение Плюсы Минусы
СЧЁТЕСЛИ Проверка наличия совпадений Простота, работает во всех версиях Не извлекает данные
ВПР Поиск и извлечение связанных данных Универсальность Медленно на больших массивах
ИНДЕКС-ПОИСКПОЗ Альтернатива ВПР для больших таблиц Быстрее ВПР, гибкий синтаксис Сложнее в освоении

4. Power Query: продвинутая фильтрация для больших данных

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

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

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

Результат — новая таблица только с совпадающими строками. Преимущество метода: обработка миллионов строк без зависаний.

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

1. Перед объединением удалите ненужные столбцы в редакторе.

2. Преобразуйте данные в таблицу Excel (Ctrl+T) перед загрузкой.

3. Отключите фоновую загрузку в настройках запроса.

⚠️ Внимание: Power Query чувствителен к типам данных. Если столбцы имеют разные форматы (текст vs число), объединение может не сработать. Используйте Главная → Преобразовать → Тип данных для приведения к одному формату.

5. Макрос VBA для автоматизации поиска совпадений

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

Код макроса:

Sub FindMatches()

Dim ws As Worksheet

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

Dim dict As Object

Dim i As Long, lastRow As Long

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

Set dict = CreateObject("Scripting.Dictionary")

' Определяем диапазоны (измените на свои)

Set ws = ActiveSheet

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

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

Set rng2 = ws.Range("B2:B" & lastRow)

' Заполняем словарь значениями из второго столбца

For Each cell In rng2

dict(cell.Value) = 1

Next cell

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

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

i = 2

' Проверяем первый столбец на совпадения

For Each cell In rng1

If dict.exists(cell.Value) Then

Cells(i, 1).Value = cell.Value

i = i + 1

End If

Next cell

MsgBox "Фильтрация завершена! Найдено " & (i - 2) & " совпадений.", vbInformation

End Sub

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

  • 🔹 Нажмите Alt+F11, чтобы открыть редактор VBA.
  • 🔹 Вставьте код в новый модуль (Insert → Module).
  • 🔹 Запустите макрос клавишей F5.

Макрос создаст лист "Совпадения" с отфильтрованными данными. Важно: перед запуском сохраните файл как .xlsm (с поддержкой макросов).

Измените диапазоны rng1 и rng2 на свои столбцы

Убедитесь, что в данных нет пустых ячеек в заголовках

Отключите защиту листа, если она включена

Сохраните файл как .xlsm-->

Сравнение методов: какой выбрать?

Выбор способа зависит от объёма данных, версии Excel и задачи:

Рекомендации:

  • 📌 Для маленьких таблиц (до 1 000 строк) — условное форматирование или текстовый фильтр.
  • 📌 Для средних таблиц (1 000–50 000 строк) — формулы (СЧЁТЕСЛИ, ВПР).
  • 📌 Для больших таблиц (50 000+ строк) — Power Query или макрос VBA.
  • 📌 Если нужно автоматизировать процесс — VBA.

Критические ошибки при фильтрации:

  • ❌ Сравнение столбцов с разными типами данных (текст vs число).
  • ❌ Игнорирование регистра символов (например, "Иванов" ≠ "иванов").
  • ❌ Работа с неочищенными данными (лишние пробелы, непечатаемые символы).

FAQ: Частые вопросы по фильтрации совпадений

Можно ли найти совпадения в двух столбцах на разных листах?

Да, используйте формулы с указанием листа. Например:

=СЧЁТЕСЛИ(Лист2!$B:$B; A2)>0

или в Power Query загрузите оба листа как отдельные запросы и объедините их.

Почему условное форматирование не находит все совпадения?

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

  • 🔸 В данных есть скрытые символы (пробелы, переносы строк). Используйте =ПЕЧСИМВ(A2).
  • 🔸 Столбцы имеют разные форматы (например, текст vs число). Приведите к одному формату.
  • 🔸 Формула применяется не ко всему диапазону. Проверьте ссылки ($A:$A вместо A2:A100).

Как найти совпадения с учётом частичного совпадения (например, "Иванов" и "Иванов П.С.")?

Используйте формулу с подстановочным знаком:

=СЧЁТЕСЛИ($B:$B; "" & A2 & "")>0

или функцию ПОИСК():

=ЕСЛИ(НЕ(ЕОШ(ПОИСК(A2; B2)))); "Совпадает"; "")

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

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

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

или в Power Query выберите тип объединения "Только в первом" или "Только во втором".

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

Приведите даты к одному формату функцией =ДАТАЗНАЧ() или =ТЕКСТ(), затем используйте стандартные методы:

=СЧЁТЕСЛИ($B:$B; ТЕКСТ(A2; "ДД.ММ.ГГГГ"))>0
Важно: даты в Excel хранятся как числа, поэтому прямое сравнение A2=B2 может не сработать из-за разницы во времени.