Как удалить одинаковые номера в Excel: все способы с примерами

При попытке удалить повторяющиеся номера в Excel пользователи сталкиваются с двумя типичными проблемами: либо функция Удалить дубликаты не работает из-за скрытых символов в ячейках, либо после очистки нарушается структура данных. Например, если в столбце A содержатся номера телефонов в формате +7(999)123-45-67 и 89991234567, Excel воспринимает их как разные значения — даже если это один и тот же номер. В 80% случаев ошибка кроется в несовпадении форматов или наличии пробелов.

Эта статья охватывает 5 проверенных методов удаления дубликатов — от базового инструмента Данные → Удалить дубликаты до продвинутых формул и Power Query. Особое внимание уделено обработке номеров с разделителями, ведущими нулями и текстовыми артефактами. Если после применения стандартных способов дубликаты остаются, воспользуйтесь диагностической таблицей в разделе про скрытые символы.

1. Стандартный инструмент «Удалить дубликаты»: когда он работает

Встроенная функция Удалить дубликаты (Data → Remove Duplicates в английской версии) справляется с задачей, если номера в столбце имеют идентичный формат и не содержат скрытых символов. Алгоритм действия:

  1. Выделите диапазон с номерами (например, A1:A100).
  2. Перейдите на вкладку ДанныеУдалить дубликаты.
  3. В окне настроек оставьте галочку только напротив столбца с номерами.
  4. Нажмите ОК и подтвердите удаление.

⚠️ Критическая ошибка: если после выполнения операции количество строк не изменилось, проверьте:

  • 🔍 Формат ячеек: номера в формате Текст и Число считаются разными значениями.
  • 📏 Ведущие пробелы: нажмите Ctrl+H, в поле Найти введите пробел, оставьте Заменить на пустым.
  • 📱 Разделители: номера 8-999-123-45-67 и 89991234567 — это разные записи.

Проверьте формат ячеек (должен быть одинаковым)|Удалите пробелы через Ctrl+H|Преобразуйте номера в единый формат (например, только цифры)|Сортируйте данные перед удалением (необязательно, но рекомендуется)

-->

Если стандартный метод не сработал, переходите к следующему разделу — там рассмотрены случаи с неочевидными дубликатами.

2. Поиск и удаление дубликатов с учётом скрытых символов

Номера, скопированные из веб-форм, PDF или мессенджеров, часто содержат непечатаемые символы: неразрывные пробелы (CHAR(160)), символы табуляции (CHAR(9)) или переноса строки (CHAR(10)). Чтобы их обнаружить:

  1. Добавьте справа от столбца с номерами вспомогательный столбец.
  2. Введите формулу:
    =КОДСИМВ(ЛЕВСИМВ(A1;1))

    и протяните её вниз. Если результат отображает числа 160, 9 или 10 — в ячейке есть скрытые символы.

  3. Удалите их через Найти и заменить (Ctrl+H), используя комбинации из таблицы ниже.
СимволКод для поискаКак вводить в Найти
Неразрывный пробелCHAR(160)Удерживайте Alt, наберите 0160 на цифровой клавиатуре
ТабуляцияCHAR(9)Удерживайте Alt, наберите 009
Перенос строкиCHAR(10)Удерживайте Alt, наберите 010
Кавычки (например, „ “)CHAR(8220) и CHAR(8221)Копируйте символы напрямую из ячейки

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

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

Sub CleanNumbers()

Dim rng As Range

For Each rng In Selection

rng.Value = WorksheetFunction.Clean(rng.Value)

rng.Value = Replace(rng.Value, Chr(160), " ")

Next rng

End Sub

3. Удаление дубликатов с сохранением первого/последнего вхождения

По умолчанию Excel оставляет первое встреченное значение и удаляет все последующие дубли. Если нужно сохранить последнее вхождение или конкретную запись (например, с максимальной датой), используйте комбинацию функций СЧЁТЕСЛИ и ИНДЕКС:

  1. Добавьте справа вспомогательный столбец с формулой:
    =СЧЁТЕСЛИ($A$1:A1;A1)

    Она присваивает 1 первому вхождению номера, 2 — второму и т.д.

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

Для сохранения последнего вхождения модифицируйте формулу:

=СЧЁТЕСЛИ(A:A;A1)-СЧЁТЕСЛИ($A$1:A1;A1)

Стандартный инструмент Excel|Формулы (СЧЁТЕСЛИ, ИНДЕКС)|Power Query|Макросы VBA|Другое-->

4. Нормализация номеров перед удалением дубликатов

Если номера записаны в разных форматах (например, +7 999 123-45-67, 8(999)1234567, 9991234567), их нужно привести к единому виду. Используйте комбинацию функций:

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"(";"");")";"");"-";"");" ";"");"+";"")

Эта формула удаляет все разделители, оставляя только цифры. Для добавления префикса +7 к номерам в формате 8999... используйте:

=ЕСЛИ(ДЛСТР(A1)=11;"7"&A1;ЕСЛИ(ЛЕВСИМВ(A1)="8";"7"&ПРАВСИМВ(A1;10);A1))
⚠️ Внимание: После нормализации проверьте корректность номеров с помощью функции =ДЛСТР(). Длина российского номера в международном формате должна быть 11 символов (например, 79991234567).

5. Удаление дубликатов через Power Query (для больших таблиц)

Power Query (вкладка Данные → Получить данные) эффективен для обработки таблиц с 10 000+ строк. Алгоритм:

  1. Выделите диапазон и нажмите Данные → Из таблицы/диапазона (или Get Data → From Table/Range).
  2. В открывшемся редакторе Power Query выделите столбец с номерами.
  3. Нажмите Главная → Удалить строки → Удалить дубликаты.
  4. Подтвердите изменения и загрузите данные обратно в Excel.

Преимущества метода:

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

6. Автоматизация через макросы VBA

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

Sub RemoveDuplicateNumbers()

Dim ws As Worksheet

Dim rng As Range

Set ws = ActiveSheet

Set rng = ws.Range("A1:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row)

' Нормализация номеров (удаление всех нецифровых символов)

For Each cell In rng

cell.Value = WorksheetFunction.Substitute( _

WorksheetFunction.Substitute( _

WorksheetFunction.Substitute( _

WorksheetFunction.Substitute( _

cell.Value, "(", ""), ")", ""), "-", ""), " ", "")

Next cell

' Удаление дубликатов

rng.RemoveDuplicates Columns:=1, Header:=xlNo

End Sub

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

  1. Нажмите Alt+F11 для открытия редактора VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Вернитесь в Excel и нажмите Alt+F8, выберите макрос RemoveDuplicateNumbers.
⚠️ Внимание: Перед первым запуском макроса сохраните файл в формате .xlsm (с поддержкой макросов) и разрешите их выполнение в настройках безопасности Excel (Файл → Параметры → Центр управления безопасностью).

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

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

Это происходит, если в исходных данных были ячейки с формулами, возвращающими пустое значение (например, =ЕСЛИ(A1="";"";A1)). Перед удалением дубликатов преобразуйте формулы в значения: выделите диапазон → КопироватьСпециальная вставка → Значения.

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

Сначала объедините данные в один столбец с помощью Power Query:

  1. Загрузите таблицу в Power Query.
  2. Выделите столбцы с номерами → Преобразовать → Развернуть.
  3. Удалите дубликаты в полученном столбце.

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

=ТРАНСП(УНИК(Объединить(А1:А100;B1:B100)))

(доступно в Excel 365).

Можно ли удалить дубликаты без потери форматирования?

Стандартный инструмент Удалить дубликаты сохраняет форматирование первой встреченной ячейки. Чтобы перенести формат с последнего вхождения:

  1. Добавьте вспомогательный столбец с формулой =СЧЁТЕСЛИ(A:A;A1).
  2. Отсортируйте данные по этому столбцу по убыванию.
  3. Удалите дубликаты — останутся последние вхождения с их форматированием.

Как удалить дубликаты в Google Таблицах?

В Google Sheets алгоритм аналогичен:

  1. Выделите диапазон → Данные → Очистить дубликаты.
  2. Для нормализации номеров используйте =REGEXREPLACE(A1;"[^0-9]";"").
  3. Для сохранения последнего вхождения: =UNIQUE(FILTER(A:A;ROW(A:A)=MAX(IF(A:A=A1;ROW(A:A))))).

Отличие: в Google Sheets нет Power Query, но есть встроенная функция =UNIQUE().

Почему функция УНИК (UNIQUE) не удаляет все дубликаты?

Функция =УНИК() (доступна в Excel 365 и Excel 2021) чувствительна к регистру и скрытым символам. Если после её применения остаются "дубликаты":

  • Проверьте регистр с помощью =СРАВНИТЬ(A1;B1) (вернёт 0, если строки идентичны).
  • Удалите непечатаемые символы формулой =СЖПРОБЕЛЫ(ПЕЧСИМВ(A1)).