Другие языки программирования и технологии
Приведение всех телефонов к международному формату +7 xxx xxx-xx-xx в Excel
Имеется большой список номеров телефоном в различном формате записи: P2666666 и соответственно привести к +7 86146 266-66-66 P8-(918) 3333333 - +7 918 333-33-33 P84033333335 - +7 403 333-33-335 скорее всего тут допущена ошибка при наборе номера 23333333 - +7 86146 233-33-33 P8-(800) 2007070 - +7 800 200-70-70 P84954333311 - +7 495 433-33-11 P8-(909) 4567898*C +7 909 456-78-98 Подскажите хотя бы в каком направлении поискать информацию.
Решение с VBA
Код поместить в Модуль1 проекта VBA
Код
Sub Noner_norm()
i = 1 '1 (единицу) заменить, если номера начинаются не с первой строки
While Cells(i, 1) <> "" '1 (единицу) заменить, если номера не в первом столбце
n = Cells(i, 1) '1 (единицу) заменить, если номера не в первом столбце
If Len(n) = 8 Then n = Mid(n, 2)
If Len(n) = 7 Then nomer = "+7 86146 " & Mid(n, 1, 3) & "-" & Mid(n, 4, 2) & "-" & Mid(n, 6, 2)
If Len(n) = 12 Then nomer = "+7 " & Mid(n, 3, 3) & " " & Mid(n, 6, 3) & "-" & Mid(n, 9, 2) & "-" & Mid(n, 11, 2)
If Len(n) = 16 Then nomer = "+7 " & Mid(n, 5, 3) & " " & Mid(n, 10, 3) & "-" & Mid(n, 13, 2) & "-" & Mid(n, 15, 2)
Cells(i, 2) = nomer '2 (двойку) заменить, если исправленные номера вставлять не во второй столбец
i = i + 1
Wend
End Sub
После вставки кода запустить макрос.
Код поместить в Модуль1 проекта VBA
Код
Sub Noner_norm()
i = 1 '1 (единицу) заменить, если номера начинаются не с первой строки
While Cells(i, 1) <> "" '1 (единицу) заменить, если номера не в первом столбце
n = Cells(i, 1) '1 (единицу) заменить, если номера не в первом столбце
If Len(n) = 8 Then n = Mid(n, 2)
If Len(n) = 7 Then nomer = "+7 86146 " & Mid(n, 1, 3) & "-" & Mid(n, 4, 2) & "-" & Mid(n, 6, 2)
If Len(n) = 12 Then nomer = "+7 " & Mid(n, 3, 3) & " " & Mid(n, 6, 3) & "-" & Mid(n, 9, 2) & "-" & Mid(n, 11, 2)
If Len(n) = 16 Then nomer = "+7 " & Mid(n, 5, 3) & " " & Mid(n, 10, 3) & "-" & Mid(n, 13, 2) & "-" & Mid(n, 15, 2)
Cells(i, 2) = nomer '2 (двойку) заменить, если исправленные номера вставлять не во второй столбец
i = i + 1
Wend
End Sub
После вставки кода запустить макрос.
"+7" это СНГ
та же европа уже "+3"
цифра после плюса сильно зависит от региона))
та же европа уже "+3"
цифра после плюса сильно зависит от региона))
Сначала - оставить в тексте только цифры
Потом - проверка длины строки (7 или 11 - правильно, больше или меньше - ошибка)
В конце - добавление кода и форматирование.
Без VBA, по-моему, не обойтись. Точнее, можно и формулами, но это по 20 формул на один номер.
Потом - проверка длины строки (7 или 11 - правильно, больше или меньше - ошибка)
В конце - добавление кода и форматирование.
Без VBA, по-моему, не обойтись. Точнее, можно и формулами, но это по 20 формул на один номер.
Похожие вопросы
- Формат "Время" в Excel
- Возможно ли сохранить лист Excel в формате JPEG
- Вставка "вложенной" таблицы в Excel (или Access)
- Программирование в Excel - VBA
- как изменить формат файла с txt на bat? На винде 7. как изменить формат файла с txt на bat? На винде 7
- Необходимо создать макрос для excel
- вопрос по "множественному" ЕСЛИ в логических формулах Excel 2007 и 2010
- MO Excel
- Excel сошёл с ума (вопрос по VBA)
- Excel 2007 x^3+1,41*x^2-5,4724*x-7,380384=0 как решить это уравнение ???=(