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

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

В этой статье вы найдёте 7 проверенных методов для поиска и сравнения повторяющихся значений — от элементарных функций СЧЁТЕСЛИ до продвинутых инструментов вроде Power Query и VBA. Мы разберём, как:

  • 🔍 Выделить дубликаты цветом за 2 клика (даже в таблицах на 100 000 строк)
  • 📊 Сравнить два столбца и найти общие/уникальные значения
  • 🔄 Автоматизировать поиск повторов с помощью формул массива
  • 📈 Визуализировать дубликаты на диаграммах (да, это возможно!)

Все методы протестированы в Excel 2019–2023 и Microsoft 365, с учётом особенностей разных версий. Если вы работаете с Google Sheets90% инструкций подойдут и там, но с поправкой на синтаксис формул.

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

1. Быстрое выделение дубликатов условным форматированием

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

Как применить:

  1. Выделите диапазон данных (например, A2:A1000).
  2. Перейдите на вкладку Главная → Условное форматирование → Правила выделения ячеек → Повторяющиеся значения.
  3. В окне выберите формат (например, светло-красную заливку) и нажмите ОК.

⚠️ Внимание: Если в вашей таблице есть пустые ячейки, Excel воспримет их как уникальные значения. Чтобы избежать ложных срабатываний, предварительно очистите данные от пробелов функцией СЖПРОБЕЛЫ или удалите пустые строки.

Удалить пустые строки|Заменить лишние пробелы (Ctrl+H → пробел на пробел)|Проверить регистр (Excel различает "Иванов" и "иванов")|Преобразовать текст в один регистр функцией ПРОПНАЧ-->

Метод Плюсы Минусы Время выполнения (на 10 000 строк)
Условное форматирование Быстро, визуально наглядно Не показывает количество повторов 1–2 секунды
Функция СЧЁТЕСЛИ Показывает точное число повторов Требует дополнительного столбца 3–5 секунд
Формулы массива Гибкость (можно искать частичные совпадения) Сложный синтаксис для новичков 5–10 секунд

2. Поиск дубликатов с помощью функции СЧЁТЕСЛИ

Если нужно не только выделить повторяющиеся значения, но и посчитать их количество, используйте функцию СЧЁТЕСЛИ. Она подходит для анализа одного столбца или сравнения двух диапазонов.

Формула для поиска дубликатов в столбце A:

=ЕСЛИ(СЧЁТЕСЛИ($A$2:$A$100; A2)>1; "Дубликат"; "")

Разберём её пошагово:

  • 📌 $A$2:$A$100 — диапазон поиска (фиксированный, чтобы не сдвигался при копировании формулы вниз).
  • 📌 A2 — текущая ячейка, для которой проверяем повторения.
  • 📌 ЕСЛИ(СЧЁТЕСЛИ(...)>1; ...) — если значение встречается больше 1 раза, помечаем его как "Дубликат".

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

=ЕСЛИ(СЧЁТЕСЛИ($A$2:A2; A2)>1; "Дубликат"; "")

Обратите внимание на $A$2:A2 — здесь верхняя граница диапазона не фиксирована, поэтому при копировании формулы вниз она будет расширяться.

3. Сравнение двух столбцов: общие и уникальные значения

Частая задача — сравнить два списка (например, клиенты за два месяца) и найти:

  • 🔹 Общие значения (пересечение)
  • 🔹 Уникальные для каждого списка (разность)
  • 🔹 Все значения без повторов (объединение)

Для этого используйте комбинацию функций СЧЁТЕСЛИ и ПОИСКПОЗ:

Формула для поиска общих значений (пересечение):

=ЕСЛИОШИБКА(ПОИСКПОЗ(A2; $B$2:$B$100; 0); "")

Если значение из столбца A есть в столбце B, формула вернёт его позицию. Чтобы вывести само значение, оберните её в ИНДЕКС:

=ЕСЛИОШИБКА(ИНДЕКС($B$2:$B$100; ПОИСКПОЗ(A2; $B$2:$B$100; 0)); "")

Для уникальных значений (разность):

=ЕСЛИ(СЧЁТЕСЛИ($B$2:$B$100; A2)=0; A2; "")
Как сравнить два столбца с учётом регистра?

По умолчанию СЧЁТЕСЛИ и ПОИСКПОЗ игнорируют регистр. Чтобы учитывать заглавные/строчные буквы, используйте формулу массива:

=ЕСЛИ(МАКС(--(ТОЧНОЕ($B$2:$B$100; A2))); A2; "")

Вводите её с Ctrl+Shift+Enter в старых версиях Excel (до 2019 года).

4. Продвинутый поиск: формулы массива и ДВССЫЛ

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

Пример: Найдём повторяющиеся пары "Имя + Фамилия" в диапазоне A2:B100:

=ЕСЛИ(СЧЁТЕСЛИ($A$2:$A$100&$B$2:$B$100; A2&B2)>1; "Дубликат"; "")

Для динамического диапазона (чтобы не прописывать вручную последнюю строку) используйте ДВССЫЛ:

=ЕСЛИ(СЧЁТЕСЛИ(ДВССЫЛ("A2:A"&СЧЁТЗ(A:A))&ДВССЫЛ("B2:B"&СЧЁТЗ(B:B)); A2&B2)>1; "Дубликат"; "")

⚠️ Внимание: Формулы с ДВССЫЛ могут значительно замедлить работу книги, если использовать их в больших таблицах (от 50 000 строк). В таких случаях лучше применять Power Query или VBA.

5. Автоматизация с Power Query: обработка миллионов строк

Power Query (вкладка Данные → Получить данные) — самый мощный инструмент для работы с дубликатами в больших наборах данных. Он позволяет:

  • 📊 Обрабатывать файлы размером >1 млн строк (Excel стандартными средствами с таким объёмом не справится).
  • 🔄 Объединять данные из нескольких источников (Excel, CSV, базы данных).
  • 🛠️ Создавать многоступенчатые правила фильтрации (например, искать дубликаты только для определённой категории товаров).

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

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

6. Визуализация дубликатов на диаграммах

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

Как построить диаграмму дубликатов:

  1. Создайте сводную таблицу на основе ваших данных.
  2. В область Значения перетащите поле, по которому ищете дубликаты, и настройте Параметры поля значения → Дополнительные вычисления → Количество.
  3. Отфильтруйте сводную таблицу, оставив только строки с количеством >1.
  4. Постройте на её основе гистограмму или круговую диаграмму.

Пример: если у вас список заказов с повторяющимися номерами клиентов, такая диаграмма покажет, какие клиенты делали заказы чаще всего.

7. VBA-скрипт для удаления дубликатов по нескольким критериям

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

Sub УдалитьДубликатыПоКритериям()

Dim ws As Worksheet

Dim lastRow As Long

Dim rng As Range

Set ws = ActiveSheet

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

Set rng = ws.Range("A2:C" & lastRow) ' Диапазон с данными (измените под свои столбцы)

' Удаляем дубликаты, оставляя последнюю запись

rng.RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo

End Sub

Что делает этот код:

  • 📌 Определяет последний заполненный ряд в столбце A.
  • 📌 Устанавливает диапазон для проверки (в примере — столбцы A:C).
  • 📌 Удаляет дубликаты по первым двум столбцам (Columns:=Array(1, 2)), оставляя последнюю запись.

⚠️ Внимание: Перед запуском макроса обязательно сохраните резервную копию файла. VBA-скрипты необратимо изменяют данные, и отменить их действие (Ctrl+Z) после выполнения не получится.

rng.Sort Key1:=rng.Columns(1), Order1:=xlAscending, Header:=xlNo

Это отсортирует данные по первому столбцу, и RemoveDuplicates оставит первую встреченную запись.-->

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

Можно ли найти дубликаты с учётом форматирования (например, жирный шрифт)?

Нет, стандартные функции Excel (СЧЁТЕСЛИ, условное форматирование) анализируют только значения ячеек, игнорируя форматирование. Чтобы учитывать стили, придётся писать VBA-скрипт, который проверяет свойства ячеек (например, .Font.Bold).

Как найти дубликаты в Google Sheets?

В Google Sheets работают те же принципы, но с поправками:

  • 📌 Условное форматирование: Формат → Условное форматирование → Настраиваемые формулы → введите =COUNTIF(A:A; A1)>1.
  • 📌 Формулы: замените ; на , (например, =COUNTIF(A:A, A1)).
  • 📌 Power Query отсутствует, но есть альтернатива — Apps Script.
Почему СЧЁТЕСЛИ не находит дубликаты, если они есть?

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

  • 🔸 Лишние пробелы — используйте =СЖПРОБЕЛЫ(A2) для очистки.
  • 🔸 Разный регистр — приведите текст к одному регистру функцией ПРОПНАЧ или СТРОЧН.
  • 🔸 Скрытые символы (переносы строк, неразрывные пробелы) — замените их через Ctrl+H (найти: Alt+0160, заменить на пробел).
  • 🔸 Числа, сохранённые как текст — проверьте формат ячеек (Главная → Формат → Формат ячеек).
Как сравнить два файла Excel на наличие дубликатов?

Есть 3 способа:

  1. Power Query: импортируйте оба файла, объедините запросы (Объединить → Внутреннее объединение) и отфильтруйте совпадения.
  2. Формулы: откройте оба файла, в первом добавьте столбец с формулой =СЧЁТЕСЛИ([Book2.xlsx]Лист1!$A:$A; A2).
  3. VBA: напишите макрос, который последовательно сравнивает данные из двух книг (пример кода можно найти в справке Microsoft).

⚠️ Для больших файлов (>100 МБ) используйте Power Query — он оптимизирован для работы с объёмными данными.

Можно ли найти частичные дубликаты (например, "Иванов" и "Иванов И.И.")?

Да, для этого подойдут:

  • 📌 Функция ПОИСК:
    =ЕСЛИ(ЕЧИСЛО(ПОИСК("Иванов"; A2)); "Совпадение"; "")
  • 📌 Формула массива с ПОИСК:
    =ЕСЛИ(МАКС(--(НЕ(ЕОШИБКА(ПОИСК($A$2:$A$100; B2))))); "Есть совпадение"; "")

    (вводите с Ctrl+Shift+Enter в Excel 2019 и старше).

  • 📌 Нечёткое сравнение: для сложных случаев (опечатки, перестановки слов) используйте надстройку Fuzzy Lookup (доступна в Power Query).