Дефисы между цифрами в Microsoft Excel часто появляются при импорте данных из внешних источников (1С, CRM, банковские выписки) или после копирования номеров телефонов, серийных кодов и идентификаторов типа 123-456-7890. Проблема в том, что такие значения Excel воспринимает как текст, а не как числа — их нельзя просуммировать, отсортировать по возрастанию или использовать в вычислениях. Например, при попытке применить функцию СУММ() к столбцу с дефисами результат будет равен нулю, хотя визуально данные выглядят как числовые.
В 80% случаев пользователи пытаются решить задачу через ручную замену (Ctrl+H), но этот метод работает только для простых случаев. Если дефисы стоят в случайных позициях (например, 12-345-67-89), или данные содержат другие разделители (пробелы, точки, запятые), требуются более гибкие подходы. Ниже разобраны все актуальные способы — от элементарных до автоматизированных, с учётом нюансов форматирования и производительности для больших таблиц (10 000+ строк).
1. Быстрая замена дефисов через «Найти и заменить»
Самый очевидный метод — использование стандартного инструмента Найти и заменить (Ctrl+H). Он подходит для случаев, когда дефисы стоят в фиксированных позициях (например, в номерах телефонов XXX-XXX-XXXX) и не перемешаны с другими символами. Алгоритм:
- Выделите диапазон ячеек с данными (или весь лист —
Ctrl+A). - Нажмите
Ctrl+H, чтобы открыть окно замены. - В поле «Найти» введите
-(дефис). - Поле «Заменить на» оставьте пустым.
- Нажмите «Заменить всё».
⚠️ Внимание: Если в данных есть другие знаки препинания (например, тире — или минус −), они не будут удалены. Чтобы удалить все типы дефисов, используйте подстановочный знак ~? в поле «Найти» (работает только при включённом параметре «Подстановочные знаки» в расширенных настройках).
2. Преобразование текста в числа с удалением дефисов
Когда дефисы удалены, но Excel по-прежнему воспринимает данные как текст (выравнивание по левому краю, зелёный индикатор ошибки), требуется принудительное преобразование формата. Способы:
- 📊 Через «Текст по столбцам»:
- Выделите столбец → вкладка
Данные→Текст по столбцам. - Выберите
С разделителями→ нажмитеДалее. - Снимите все галочки с разделителей (табуляция, точка с запятой и т. д.) →
Готово.
- Выделите столбец → вкладка
=A1*1 и протяните её вниз. Скопируйте результаты → Специальная вставка → Значения.Enter — Excel автоматически преобразует значение в число, если это возможно.Если после преобразования числа отображаются в экспоненциальном формате (например, 1.23E+10), увеличьте ширину столбца или примените пользовательский формат без экспоненты: выделите ячейки → Формат ячеек → Числовой → укажите количество десятичных знаков 0.
Почему Excel не распознаёт числа после удаления дефисов?
Скорее всего, в данных остались невидимые символы (например, неразрывный пробел или символ конца строки). Чтобы их удалить, используйте функцию =ПЕЧСИМВ(A1) — она покажет скрытые знаки. Для очистки примените =СЖПРОБЕЛЫ(ПОДСТАВИТЬ(A1;СИМВОЛ(160);" ")).
3. Удаление дефисов формулами (для динамических данных)
Если данные обновляются автоматически (например, импортируются из внешнего источника), ручная замена неэффективна. Вместо этого используйте формулы в соседнем столбце:
| Формула | Пример | Когда применять |
|---|---|---|
=ПОДСТАВИТЬ(A1;"-";"") | 1234567890 из 123-456-7890 | Дефисы стоят в фиксированных позициях |
=СЦЕПИТЬ(РАЗБИТЬТЕКСТ(A1;"-")) | 1234567890 из 12-34-56-78-90 | Дефисы в случайных позициях, но нет других разделителей |
=ЗАМЕНИТЬ(A1;ПОИСК("-";A1);1;"") | Удаляет только первый дефис | Нужно удалить конкретный дефис по позиции |
=--ПОДСТАВИТЬ(A1;"-";"") | Преобразует текст в число сразу | Дефисы удалены, но требуется преобразование формата |
Для обработки больших массивов данных (более 10 000 строк) формулы могут замедлять работу книги. В этом случае:
- Примените формулу к одному столбцу.
- Скопируйте результаты →
Специальная вставка→Значения. - Удалите столбец с формулами.
4. Автоматизация через Power Query (для сложных случаев)
Power Query (вкладка Данные → Из таблицы/диапазона) — самый мощный инструмент для очистки данных с дефисами, особенно если:
- 📂 Дефисы стоят в случайных позициях (например,
12-3456-789). - 🔄 Данные импортируются регулярно, и нужно сохранить шаги очистки.
- 📊 В одном столбце смешаны разные форматы (например,
123-456и123.456).
Пошаговая инструкция:
- Выделите исходные данные →
Данные→Из таблицы/диапазона. - В редакторе Power Query выделите столбец →
Преобразовать→Заменить значения. - В поле «Значение для поиска» введите
-, поле «Замена» оставьте пустым. - Нажмите
Закрыть и загрузить— данные вернутся в Excel без дефисов.
Критичный нюанс: Если после удаления дефисов числа отображаются как текст (например, 0001234567 вместо 1234567), в Power Query добавьте шаг преобразования типа данных: выделите столбец → Преобразовать → Числовой.
✅ Проверьте, что в столбце нет ячеек с ошибками (#Н/Д, #ЗНАЧ!)
✅ Убедитесь, что дефисы — это именно символ "-" (а не тире "—" или минус "−")
✅ Преобразуйте диапазон в таблицу (Ctrl+T) для удобства обновления
✅ Сохраните книгу перед импортом в Power Query
-->
5. Удаление дефисов с помощью VBA (для опытных пользователей)
Если вам нужно обработать сотни тысяч строк или автоматизировать процесс для регулярного использования, напишите простой макрос. Пример кода для удаления всех дефисов в выделенном диапазоне:
Sub УдалитьДефисы()
Dim rng As Range
For Each rng In Selection
If rng.Value Like "-" Then
rng.Value = Replace(rng.Value, "-", "")
End If
Next rng
End Sub
Как использовать:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert→Module). - Вернитесь в Excel, выделите нужный диапазон и запустите макрос (
Alt+F8→ выберитеУдалитьДефисы→Выполнить).
⚠️ Внимание: Макрос заменит все дефисы в выделенных ячейках, включая те, что могут быть частью текста (например, в фамилиях типа Иванов-Петров). Чтобы обработать только числовые ячейки, модифицируйте код:
Sub УдалитьДефисыВЧислах()
Dim rng As Range
For Each rng In Selection
If IsNumeric(Replace(rng.Value, "-", "")) Then
rng.Value = Replace(rng.Value, "-", "")
End If
Next rng
End Sub
6. Обработка нестандартных форматов (смешанные разделители)
Иногда дефисы комбинируются с другими символами, например: 123-456.789, 12/34-5678 или 123,456-789. В таких случаях нужна многоступенчатая очистка:
- Удалите все нечисловые символы:
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"-";"");".";"");",";"");"/";"") - Преобразуйте в число: Умножьте результат на 1 или используйте
=ЗНАЧЕН(). - Восстановите формат: Если нужно сохранить разряды (например, для денежных сумм), примените пользовательский формат
# ##0.
Пример для номера телефона с разными разделителями ((123)-456-7890):
=--ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"(";"");")";"");"-";"")
7. Частые ошибки и как их избежать
Даже опытные пользователи допускают ошибки при удалении дефисов. Рассмотрим типичные проблемы и решения:
| Ошибка | Причина | Решение |
|---|---|---|
| После замены числа стали текстом | Excel сохраняет формат ячейки | Примените Текст по столбцам или умножьте на 1 |
| Удалены не все дефисы | В данных используются разные символы тире (—, −) | Используйте СИМВОЛ(45) для точного поиска дефиса |
| Числа отображаются в экспоненциальном формате | Слишком большие значения для стандартного отображения | Увеличьте ширину столбца или примените формат Числовой с 0 десятичных знаков |
| Формулы не протягиваются на все строки | В данных есть пустые ячейки или ошибки | Используйте Специальную вставку → Формулы и форматы чисел |
⚠️ Внимание: Если после удаления дефисов числа округляются (например, 1234567890 становится 1.23E+09), это означает, что Excel интерпретирует их как числа с плавающей запятой. Чтобы сохранить точность, примените пользовательский формат 0 (без десятичных знаков).
FAQ: Ответы на частые вопросы
Можно ли удалить дефисы только в начале или конце числа?
Да, используйте формулы:
- Для удаления дефиса в начале:
=ЕСЛИ(ЛЕВСИМВ(A1)="-";ПРАВСИМВ(A1;ДЛСТР(A1)-1);A1) - Для удаления дефиса в конце:
=ЕСЛИ(ПРАВСИМВ(A1)="-";ЛЕВСИМВ(A1;ДЛСТР(A1)-1);A1)
Как удалить дефисы, но сохранить минус перед отрицательными числами?
Используйте комбинацию функций:
=ЕСЛИ(A1<0;ПОДСТАВИТЬ(A1;"-";"");ПОДСТАВИТЬ(A1;"-";""))*ЕСЛИ(A1<0;-1;1)
Эта формула удаляет все дефисы, но восстанавливает знак минус для отрицательных значений.
Почему после удаления дефисов числа становятся датами?
Excel автоматически преобразует числа типа 01-02-2023 или 12/34/5678 в даты. Чтобы этого избежать:
- Перед удалением дефисов примените текстовый формат к ячейкам.
- Используйте апостроф перед числом:
'123-456→ после удаления дефиса останется текст123456.
Как удалить дефисы в Google Таблицах?
Алгоритм аналогичен Excel:
Правка→Найти и заменить(Ctrl+H).- В поле «Найти» введите
-, поле «Заменить на» оставьте пустым. - Для формул используйте
=ПОДСТАВИТЬ(A1;"-";"").
Отличие: В Google Таблицах нет Power Query, но есть Apps Script для автоматизации.
Можно ли вернуть дефисы обратно после удаления?
Да, если вы знаете исходный формат. Например, чтобы вернуть формат телефона XXX-XXX-XXXX:
=ЛЕВСИМВ(A1;3)&"-"&СРЕДЗНАЧ(A1;4;3)&"-"&ПРАВСИМВ(A1;4)
Для произвольных позиций дефисов потребуется VBA или регулярные выражения в Power Query.