Как исправить номера телефонов в эксель

В поле номера телефона очень часто попадают знаки, введенные для удобства чтения (пробелы, минусы, скобки и.т д.).

Очень удобно создать колонку с удалением таких знаков и в дальнейшем получать телефонный номер по строке с удалёнными лишними знаками.

Правда, после этой операции первый нецифровой символ придется находить формулой массива.

если номер находится в ячейке B3 то формула для обработки номера (с удалением скобок,плюсов, минусов и пробелов) выглядит так:

=ПОДСТАВИТЬ( ПОДСТАВИТЬ( ПОДСТАВИТЬ( ПОДСТАВИТЬ( ПОДСТАВИТЬ( B3;»(» ; «»);»)» ; «»);»+» ; «»);»-» ; «»);» » ; «»)

Формула массива для извлечения номера (если обработанный номер в ячейке C3) такая:

=»+7″&ПРАВСИМВ( ПСТР(C3;1; ЕСЛИОШИБКА( ПОИСКПОЗ( ЛОЖЬ; ЕЧИСЛО( ЗНАЧЕН( ПСТР(C3; СТРОКА( ДВССЫЛ( «1:»&ДЛСТР( C3))) ; 1))); 0)-1; ДЛСТР(C3))) ; 10)

Поскольку это формула массива ввод формулы оканчивается комбинацией клавиш CTRL+SHIFT+ENTER

Пример извлечения телефонного номера из строк различного формата.

Подробнее о формулах массива

Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007 Еще…Меньше

Excel предоставляет специальный числовом формате, который позволяет форматирование номера в виде номера телефона. Например, можно отформатовать 10-значное число, например 5555551234, как (555) 555-1234.

  1. Выберите ячейку или диапазон, которые нужно отформатирование. Как выбрать ячейки или диапазоны?

  2. На вкладке Главная нажмите кнопку запуска диалогового окна рядом с полем Число.

    Кнопка вызова диалогового окна в группе "Число"

  3. В окне Категория выберите особый.

  4. В списке Тип выберите Телефон число.

Совет: Чтобы увидеть код числовых форматов Телефон, щелкните категорию Пользовательские и посмотрите на поле Тип. Например, код [<=9999999]###-####;(###) ###-#### используется для отображения номера телефона (555) 555-1234. Если вам не соответствует заранее созданный формат номера телефона, вы можете использовать его в качестве отправной точки для создания собственного формата. Дополнительные сведения см. в том, как создать или удалить пользовательский числовой формат.

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.

В этом учебном материале по Excel мы рассмотрим примеры того как очистить и переформатировать телефонные номера

Как в Excel очистить и переформатировать телефонные номера

Основная формула

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;«(«;«»);«)»;«»);«-«;«»);» «;«»);«.»;«»)+0

Описание

Один из способов очистить и переформатировать телефонные номера — это удалить все посторонние символы, а затем применить встроенный в Excel формат телефонных номеров.
В приведенной выше формуле используется ряд вложенных функций ПОДСТАВИТЬ для удаления пробелов, дефисов и круглых скобок.
Вам нужно будет настроить фактические замены в соответствии с вашими данными.

Пояснение

Формула выполняется изнутри, при этом каждая функция ПОДСТАВИТЬ удаляет один символ.
Самая внутренняя функция ПОДСТАВИТЬ удаляет левые круглые скобки, и результат передается следующей ПОДСТАВИТЬ, которая удаляет правые круглые скобки, и так далее.
Каждый раз, когда вы используете функцию ПОДСТАВИТЬ, результатом будет текст. Поскольку вы не можете применить числовой формат к тексту, нам нужно преобразовать текст в число. Один из способов сделать это — добавить ноль +0, который автоматически преобразует числа в текстовом формате в числа в числовом формате.

Наконец, применяется формат телефонного номера «Пользовательский» (столбец D).
Настройка формата происходит в форме «Формат ячеек» вызывается нажатием клавиш Ctrl+1. Далее на как на скрине ниже.
Как в Excel переформатировать телефонные номера

Уловка с пробелом для удобочитаемости

При вложении нескольких функций возникнет трудность прочитать формулу и сохранить сбалансированность всех круглых скобок. Excel не заботится о лишних пробелах в формуле, поэтому, чтобы сделать формулу более читаемой, вы можете добавить в формулу разрывы строк.
Например, формулу выше можно записать так:

=

ПОДСТАВИТЬ(

ПОДСТАВИТЬ(

ПОДСТАВИТЬ(

ПОДСТАВИТЬ(

ПОДСТАВИТЬ(

A1;

«(«; «»);

«)»; «»);

«-«; «»);

«»; «»);

«.»; «»)

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

Generally, when we need to collect mobile phone numbers on an excel sheet, the values are stored in a special format to differentiate them from normal digits. The special format is a «-» separator used after the third and sixth digits in the ten-digit phone number. However, you may need to convert those phone numbers to standard digit format on occasion. If we try to do that manually, then it can be a complex and time-consuming task. Using the formula, we can complete the task more quickly and easily.

Read this tutorial to learn how you can convert phone number format to digits in Excel. We can use the SUBSTITUTE function to complete our task in a simple way. The Excel SUBSTITUTE function replaces text in a given string by matching. For example, =SUBSTITUTE(«952-455-7865″,»-«,»») returns «9524557865»;

The dash is stripped. SUBSTITUTE is case-sensitive and does not support wildcards.

Converting the Phone Number Format to Digits in Excel

Here, we will first use the loop of SUBSTITUTE formulas to get any one of the results and then use the auto-fill handle to get all the results.

Step 1

Consider any excel sheet where the data is a list of phone numbers, as shown in the image below. 

Then, in our case, cell B2, click on an empty cell and enter the formula as follows −

=—SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,»(«,»»),»)»,»»),» «,»»),»-«,»»)and click enter to get our first result as similar to below image. In the formula, A2, there is the address of the phone number in the Excel sheet.

Empty cell > Formula > Enter

Step 2

Then drag down from the first result using the auto-fill handle, and our final result will be similar to the below image.

Conclusion

In this tutorial, we used a simple example to demonstrate how you can convert a phone number to digits in Excel.

 

maves

Пользователь

Сообщений: 5
Регистрация: 15.01.2020

Добрый день! Нужно поменять из основного формата, чтобы номера телефонов отображались в виде: +7 (999) 999-99-99. Формат ячеек использовать нельзя, так как при загрузке файла по месту требования, формат файла теряется и номера остаются набраны в первоначальном виде. Файл прилагается.

Изменено: maves15.01.2020 11:32:08

 

Mershik

Пользователь

Сообщений: 8277
Регистрация: 03.12.2015

maves, а всегда они вбиваются как сейчас в примере? потому что это может влиять на решение…если возможны разные вводы тел. номеров покажите их в примере максимально больше

Не бойтесь совершенства. Вам его не достичь.

 

maves

Пользователь

Сообщений: 5
Регистрация: 15.01.2020

Спасибо. Да они всегда вбиваются по разному, разными людьми. Поэтому и хотелось бы автоматически их как-то преобразовать в один формат вида +7 (999) 999-99-99
Прикрепила файл с различными вариантами

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

#4

15.01.2020 12:14:51

в соседний столбец протянуть скопировать вставить как значения в основной столбец

Код
=ТЕКСТ(--ПРАВБ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(I3;"-";"");"(";"");")";"");"+";"");" ";"");10);"+7 (000) 000-00-00")

Лень двигатель прогресса, доказано!!!

 

maves

Пользователь

Сообщений: 5
Регистрация: 15.01.2020

Спасибо за формулу.

А можно ли в этом же столбце как то заменить. В этом файле должны быть указаны именно номера в одном столбце, чтобы они не дублировались, второй столбец чисто для второго контактного номера.

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

#6

15.01.2020 12:26:26

Цитата
maves написал:
А можно ли в этом же столбце как то заменить.

можно но это уже макрос

Лень двигатель прогресса, доказано!!!

 

Polkilo

Пользователь

Сообщений: 87
Регистрация: 24.01.2019

maves, учтите, после +7 пробела нет, если он нужен, то оберните еще раз в ПОДСТАВИТЬ и замените «(» на » («

 

maves

Пользователь

Сообщений: 5
Регистрация: 15.01.2020

#8

15.01.2020 12:31:32

Цитата
Сергей написал:
можно но это уже макрос

А Вы сможете написать?

 

Михаил Лебедев

Пользователь

Сообщений: 2860
Регистрация: 17.01.2013

#9

15.01.2020 12:38:09

Цитата
maves написал:
А Вы сможете написать?
Цитата
Сергей написал:
можно но это уже макрос

А не проще, без макроса, в любой свободный столбец вставить формулу Сергея, а потом скопировать, как значения, в нужный столбец?

PS
Еще формула

Код
="+7-"&ТЕКСТ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(I3;"+";"");"(";"");")";"");"-";"");" ";"");2;30);"000-000-00-00")

Прикрепленные файлы

  • Торговые точки.xlsx (25.34 КБ)

Изменено: Михаил Лебедев15.01.2020 12:55:39
(Загрузил файл)

Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/

 

Polkilo

Пользователь

Сообщений: 87
Регистрация: 24.01.2019

#10

15.01.2020 13:19:58

maves, проверяйте

Код
Sub ololo()
Dim i As Long
Dim MyPhone As String

For i = 3 To ThisWorkbook.Sheets("Форма").Cells(Rows.Count, 9).End(xlUp).Row 'Крутим цикл по 9 столбцу за исключением шапки
    MyPhone = OnlyNumbers(ThisWorkbook.Sheets("Форма").Cells(i, 9)) 'Оставляем в номере только цифры
    If Len(MyPhone) >= 10 Then
        MyPhone = Right(MyPhone, 10) 'забираем последние 10 символов
        MyPhone = "+7 (" & Mid(MyPhone, 1, 3) & ") " & Mid(MyPhone, 4, 3) & "-" & Mid(MyPhone, 7, 2) & "-" & Mid(MyPhone, 9, 2) 'Сцепляем
        ThisWorkbook.Sheets("Форма").Cells(i, 9) = MyPhone 'выводим на лист
    End If
Next

End Sub

Function OnlyNumbers(ByVal MyString As String) As String
Dim i As Long
Dim Numbers As String

If Len(MyString) >= 1 Then
    For i = 1 To Len(MyString)
        If IsNumeric(Mid(MyString, i, 1)) Then
            Numbers = Numbers & Mid(MyString, i, 1)
        End If
    Next
    OnlyNumbers = CStr(Numbers)
End If

End Function

Изменено: Polkilo15.01.2020 13:21:19

 

Вар.2

Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/

 

maves

Пользователь

Сообщений: 5
Регистрация: 15.01.2020

Всем спасибо за ответы!

Изменено: maves15.01.2020 13:45:30
(Неправильное использование цитат)

 

А если номер вбит по ошибке без префикса +7 или 8, то ни одно решение выше не работает, что привести к единому формату +7(000)000-00-00 или 8(000)000-00-00
Оговорка: макрос от

Polkilo

работает, но

Формула от

Сергей

не приводит к форме номера без префикса +7 или 8. Такое часто бывает
Макрос от

Михаил Лебедев

то же, не приводит к форме номера без префикса +7 или 8. Такое часто бывает

Макрос от

Polkilo

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

Что бы добить тему до готового решения, нужно:
— иметь возможность выбрать диапазон
— иметь возможность выбрать формат: +7(000)000-00-00 или 8(000)000-00-00 или 80000000000 (такой формат для всех ячеек, иначе с + формула считается)

Изменено: RUSBelorus15.01.2020 19:50:33

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

RUSBelorus, выше было обозначено приведите пример возможных вариантов для них и сделано если у вас корявые вводные создайте отдельную тему и покажите их

Лень двигатель прогресса, доказано!!!

 

RUSBelorus

Пользователь

Сообщений: 110
Регистрация: 15.11.2014

#15

15.01.2020 20:27:31

Цитата
Сергей написал:
корявые вводные

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

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

RUSBelorus, тема по приведению телефонных номеров к одному виду избита на нашей планете и формулы и удф и макросы если захотеть можно найти всё  

Лень двигатель прогресса, доказано!!!

 

RUSBelorus

Пользователь

Сообщений: 110
Регистрация: 15.11.2014

#17

15.01.2020 20:38:06

Цитата
Сергей написал:
— иметь возможность выбрать диапазон- иметь возможность выбрать формат: +7(000)000-00-00 или 8(000)000-00-00 или 80000000000 (такой формат для всех ячеек, иначе с + формула считается)

Тема избита вдоль и поперек, а дальше будет мусолиться такими как Я (простите). Я говорю про законченное решение для всех и всякого. Такого нет нигде

— иметь возможность выбрать диапазон
— иметь возможность выбрать формат: +7(000)000-00-00 или 8(000)000-00-00 или 80000000000 (такой формат для всех ячеек, иначе с + формула считается)

PS сам пользуюсь приведением телефонов к формату и знаю о чем говорю.

Изменено: RUSBelorus15.01.2020 20:39:10

 

RUSBelorus, человеческие корявые ручки могут такого написать, что никакие формулы, а возможно и макросы это не исправят. В таком случае лучше вводить данные по шаблону и запрещать ввод данных не соответвущих ему.

Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл

 

Даже если и по шаблону с любым префиксом. Все равно нет РЕШЕНИЯ выбрать диапазон и один из трех форматов телефона одновременно)

Изменено: RUSBelorus15.01.2020 20:50:07

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

#20

15.01.2020 20:49:01

Цитата
RUSBelorus написал:
PS сам пользуюсь приведением телефонов к формату и знаю о чем говорю.

и в чем проблема то непонятно форумчане предоставили решение человеку у вас другая проблема у каждого человека свои проблемы и их надо сортировать нет в жизни универсальной волшебной палочки которая выравнивает кривые ручки

Лень двигатель прогресса, доказано!!!

 

Так задача простая, объединить решения в одно. Не будет больше (или станет меньше на порядок) подобной

PS Получается, надеяться можно от снисхождения

Polkilo

)

Изменено: RUSBelorus15.01.2020 20:58:18

 

Kuzmich

Пользователь

Сообщений: 7999
Регистрация: 21.12.2012

#22

15.01.2020 20:59:32

UDF формат +7(000)000-00-00

Код
Public Function RgxPhone(iString As Range) As String
 Dim re As Object
 Dim tempString
  Set re = CreateObject("vbscript.regexp")
    re.Pattern = "(-|s|+|(|))"
    re.Global = True
    re.IgnoreCase = True
 tempString = re.Replace(iString, "")
 re.Pattern = "((8)|(7))(d{3})+(d{3})+(d{2})+(d{2})+"
  If re.Test(tempString) Then
   RgxPhone = re.Replace(tempString, "$1$2($4) $5-$6-$7")
    If (Left(RgxPhone, 1) <> "8") Then
        RgxPhone = "+" + RgxPhone
    Else
       RgxPhone = "+7" + Mid(RgxPhone, 3)
    End If
  End If
End Function
 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

#23

15.01.2020 21:01:00

Цитата
RUSBelorus написал: Так задача простая,

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

Лень двигатель прогресса, доказано!!!

 

Вы все усложняете. Вот все 4 формата номера, которые я постоянно встречаю от клиентов, не считаю что это искусственный интеллект:
+79250966362
  79250966362
  89250966362
    9250966362
PS только макрос

Polkilo

их все обрабатывает

а то что они могут быть в разных столбиках и это не ИК.

Изменено: RUSBelorus15.01.2020 21:41:28

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#25

15.01.2020 23:06:19

Цитата
RUSBelorus написал: Вы все усложняете.

А Вы оптимист :)
Приходилось обрабатывать, насмотрелся. +/7/8  слева в разных вариациях — цветочки.  Номер слитно, с пробелами, с разными разделителями, номер отделен от текста пробелом, номер слитно с текстом ,экспоненциальный формат, со знаками вопроса вместо некоторых цифр…

 

Удивитесь, макрос

Polkilo

+79250966362 +7   (925) 096-63-62
79250966362 +7 (925)   096-63-62
89250966362 +7 (925)   096-63-62
9250966362 +7 (925)   096-63-62
+7(925)   096 63-62 +7 (925)   096-63-62
7-925-096-63-62 +7 (925)   096-63-62
8 9   2 5 0 9 6 6 3 6 2 +7 (925)   096-63-62
(9)(2)(5)(0)(9)6   6 3 6    2 +7 (925)   096-63-62
+79250966362 +7 (925)   096-63-62
+7+9+250+966+362 +7 (925)   096-63-62
89-2509-6636-2 +7 (925)   096-63-62
9*2*50*9*66*36*2 +7 (925)   096-63-62

PS Речь об обработке телефона 10 знаков, а не об выделении телефона из текста

Изменено: RUSBelorus15.01.2020 23:25:46

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Я писал о «всех 4-х форматах», которые Вы встречаете.
И о том, что кроме написания номера, он может быть в тексте  с другими числовыми днными (тоже, кстати, написанными «мизинцем правой ноги черех левое плечо». И обрабка таких шедевров не заканчивается написанием макроса — через время возврат к работе — «а мы еще вот такое обнаружили, доработайте, пожалуйста»

 

RUSBelorus

Пользователь

Сообщений: 110
Регистрация: 15.11.2014

#28

15.01.2020 23:29:19

Цитата
vikttur написал:
Я писал о «всех 4-х форматах», которые Вы встречаете.

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

 

Михаил Лебедев

Пользователь

Сообщений: 2860
Регистрация: 17.01.2013

#29

16.01.2020 04:55:08

Цитата
RUSBelorus написал:
Формула от  Сергей  не приводит к форме номера без префикса +7 или 8. Такое часто бывает
Макрос от  Михаил Лебедев  то же, не приводит к форме номера без префикса +7 или 8. Такое часто бывает
Макрос от  Polkilo  работает корректно, но только по первому столбцу, нет формы выбора столбца или диапазона
RUSBelorus написал:
Так задача простая, объединить решения в одно.

Вы что, и с простой задачей сами справиться не можете? :)

Прикрепленные файлы

  • Обработка номеров телефонов макросом или функцией.xlsm (36.95 КБ)

Изменено: Михаил Лебедев16.01.2020 05:18:43
(добавил файл-пример со всяким рожном)

Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#30

16.01.2020 08:13:28

Цитата
Михаил Лебедев написал:
Вы что, и с простой задачей сами справиться не можете?

Добрый день, Михаил.
А вы уверены, что он собирался? RUSBelorus, зашёл на форум как в магазин…

Понравилась статья? Поделить с друзьями:
  • Как найти угол наклона прямой к плоскости
  • Как найти учетную политику в 1с зуп
  • Как найти момент тормозящей силы
  • Нод двух функций как найти
  • Как составит теорему по геометрии 7 класс