Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Номер телефона в один вид - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Номер телефона в один вид (Макросы/Sub)
Номер телефона в один вид
Exit007 Дата: Четверг, 11.09.2014, 12:45 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Из программы выгружались номера телефонов в виде
8-111-111-1111 или в одной ячейке было два номера 8-111-111-1111, 8-111-111-1111 и под этот формат телефона всё было настроено

Но теперь телефоны стали выгружаться ещё в одном формате

+71111111111

Нужно чтобы все телефоны переводились в вид 8-111-111-1111 или в одной ячейке было два номера 8-111-111-1111, 8-111-111-1111
Просто через замену формата не работает.
К сообщению приложен файл: 0507870.xls (30.5 Kb)
 
Ответить
СообщениеИз программы выгружались номера телефонов в виде
8-111-111-1111 или в одной ячейке было два номера 8-111-111-1111, 8-111-111-1111 и под этот формат телефона всё было настроено

Но теперь телефоны стали выгружаться ещё в одном формате

+71111111111

Нужно чтобы все телефоны переводились в вид 8-111-111-1111 или в одной ячейке было два номера 8-111-111-1111, 8-111-111-1111
Просто через замену формата не работает.

Автор - Exit007
Дата добавления - 11.09.2014 в 12:45
televnoy Дата: Четверг, 11.09.2014, 14:01 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 120
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Найти - заменить...
Найти +7 , заменить на 8, а формат ячеек я смотрю уже сам задан у вас.

Или же

[vba]
Код
Sub Макрос1()

     Cells.Replace What:="+7", Replacement:="8", LookAt:=xlPart, SearchOrder _
         :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub
[/vba]


О-па! 0_o
 
Ответить
СообщениеНайти - заменить...
Найти +7 , заменить на 8, а формат ячеек я смотрю уже сам задан у вас.

Или же

[vba]
Код
Sub Макрос1()

     Cells.Replace What:="+7", Replacement:="8", LookAt:=xlPart, SearchOrder _
         :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub
[/vba]

Автор - televnoy
Дата добавления - 11.09.2014 в 14:01
Exit007 Дата: Четверг, 11.09.2014, 14:14 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
да +7 заменить на 8 и чтобы телефон сделался вида 8-111-111-1111

Просто сменой формата не обойтись, т.к телефон получается 89165010466, а нужно 8-916-501-0466


Сообщение отредактировал Exit007 - Четверг, 11.09.2014, 14:17
 
Ответить
Сообщениеда +7 заменить на 8 и чтобы телефон сделался вида 8-111-111-1111

Просто сменой формата не обойтись, т.к телефон получается 89165010466, а нужно 8-916-501-0466

Автор - Exit007
Дата добавления - 11.09.2014 в 14:14
Pelena Дата: Четверг, 11.09.2014, 14:16 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19184
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Как вариант, формулой
К сообщению приложен файл: 3844355.xls (32.0 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеКак вариант, формулой

Автор - Pelena
Дата добавления - 11.09.2014 в 14:16
Exit007 Дата: Четверг, 11.09.2014, 14:20 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Формула по некоторым причинам увы не подойдёт :((
 
Ответить
СообщениеФормула по некоторым причинам увы не подойдёт :((

Автор - Exit007
Дата добавления - 11.09.2014 в 14:20
RAN Дата: Четверг, 11.09.2014, 14:22 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
и под этот формат телефона всё было настроено

Если не секрет, что именно было настроено?


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
и под этот формат телефона всё было настроено

Если не секрет, что именно было настроено?

Автор - RAN
Дата добавления - 11.09.2014 в 14:22
Exit007 Дата: Четверг, 11.09.2014, 14:41 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Обработка через ВПР пары Телефон-примечание
Теперь ВПР не обрабатывает телефоны формата +788888888888

Как было раньше. По результатам разговора по телефону вносилось примечание, и при следующей выборке, через ВПР я видел эти примечания и больше не звонил или наоборот звонил, в зависимости от того что было в примечании.


Сообщение отредактировал Exit007 - Четверг, 11.09.2014, 14:45
 
Ответить
СообщениеОбработка через ВПР пары Телефон-примечание
Теперь ВПР не обрабатывает телефоны формата +788888888888

Как было раньше. По результатам разговора по телефону вносилось примечание, и при следующей выборке, через ВПР я видел эти примечания и больше не звонил или наоборот звонил, в зависимости от того что было в примечании.

Автор - Exit007
Дата добавления - 11.09.2014 в 14:41
televnoy Дата: Четверг, 11.09.2014, 14:42 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 120
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Я сделал просто замену и у меня номера приняли такой вид 8-111-111-1111, вот я и подумал что у вас стоит формат ячеек
Единственное они прижались к праву, но и это не проблема, выделил и прижал с лева


О-па! 0_o

Сообщение отредактировал televnoy - Четверг, 11.09.2014, 14:42
 
Ответить
СообщениеЯ сделал просто замену и у меня номера приняли такой вид 8-111-111-1111, вот я и подумал что у вас стоит формат ячеек
Единственное они прижались к праву, но и это не проблема, выделил и прижал с лева

Автор - televnoy
Дата добавления - 11.09.2014 в 14:42
televnoy Дата: Четверг, 11.09.2014, 14:46 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 120
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010


О-па! 0_o
 
Ответить
Сообщение

Автор - televnoy
Дата добавления - 11.09.2014 в 14:46
Exit007 Дата: Четверг, 11.09.2014, 14:47 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Я сделал просто замену и у меня номера приняли такой вид 8-111-111-1111, вот я и подумал что у вас стоит формат ячеек
Единственное они прижались к праву, но и это не проблема, выделил и прижал с лева


Это всё не проблема, визуально телефоны теперь выглядят 8-111-111-1111, но по факту они 81111111111


Сообщение отредактировал Exit007 - Четверг, 11.09.2014, 14:52
 
Ответить
Сообщение
Я сделал просто замену и у меня номера приняли такой вид 8-111-111-1111, вот я и подумал что у вас стоит формат ячеек
Единственное они прижались к праву, но и это не проблема, выделил и прижал с лева


Это всё не проблема, визуально телефоны теперь выглядят 8-111-111-1111, но по факту они 81111111111

Автор - Exit007
Дата добавления - 11.09.2014 в 14:47
televnoy Дата: Четверг, 11.09.2014, 14:51 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 120
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код
Sub Макрос1()

     Cells.Replace What:="+7", Replacement:="8", LookAt:=xlPart, SearchOrder _
         :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     Columns("A:A").Select
     Selection.NumberFormat = "#-###-###-####"
End Sub
[/vba]


О-па! 0_o
 
Ответить
Сообщение[vba]
Код
Sub Макрос1()

     Cells.Replace What:="+7", Replacement:="8", LookAt:=xlPart, SearchOrder _
         :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     Columns("A:A").Select
     Selection.NumberFormat = "#-###-###-####"
End Sub
[/vba]

Автор - televnoy
Дата добавления - 11.09.2014 в 14:51
ikki Дата: Четверг, 11.09.2014, 14:52 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
[vba]
Код
Sub t()
     For Each c In ActiveSheet.[a:a].Cells
         If c.Text Like "+7##########" Then c.Value = "8-" & Mid(c.Text, 3, 3) & "-" & Mid(c.Text, 6, 3) & "-" & Right(c.Text, 4)
     Next
End Sub
[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение[vba]
Код
Sub t()
     For Each c In ActiveSheet.[a:a].Cells
         If c.Text Like "+7##########" Then c.Value = "8-" & Mid(c.Text, 3, 3) & "-" & Mid(c.Text, 6, 3) & "-" & Right(c.Text, 4)
     Next
End Sub
[/vba]

Автор - ikki
Дата добавления - 11.09.2014 в 14:52
Exit007 Дата: Четверг, 11.09.2014, 14:56 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Sub Макрос1()

    Cells.Replace What:="+7", Replacement:="8", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Columns("A:A").Select
    Selection.NumberFormat = "#-###-###-####"
End Sub


При этом формат номера меняется, но сам номер остается в формате 81111111111
 
Ответить
Сообщение
Sub Макрос1()

    Cells.Replace What:="+7", Replacement:="8", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Columns("A:A").Select
    Selection.NumberFormat = "#-###-###-####"
End Sub


При этом формат номера меняется, но сам номер остается в формате 81111111111

Автор - Exit007
Дата добавления - 11.09.2014 в 14:56
Exit007 Дата: Четверг, 11.09.2014, 14:59 | Сообщение № 14
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Sub t()
    For Each c In ActiveSheet.[a:a].Cells
        If c.Text Like "+7##########" Then c.Value = "8-" & Mid(c.Text, 3, 3) & "-" & Mid(c.Text, 6, 3) & "-" & Right(c.Text, 4)
    Next
End Sub


Ура, ура, всё заработало !!!
СПАСИБО ОГРОМНОЕ !!!!!
 
Ответить
Сообщение
Sub t()
    For Each c In ActiveSheet.[a:a].Cells
        If c.Text Like "+7##########" Then c.Value = "8-" & Mid(c.Text, 3, 3) & "-" & Mid(c.Text, 6, 3) & "-" & Right(c.Text, 4)
    Next
End Sub


Ура, ура, всё заработало !!!
СПАСИБО ОГРОМНОЕ !!!!!

Автор - Exit007
Дата добавления - 11.09.2014 в 14:59
SkyPro Дата: Четверг, 11.09.2014, 15:02 | Сообщение № 15
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
ну и я свои 5коп внесу:
[vba]
Код
Function phone(str) As String
     Dim oRegExp As Object, oRes As Object, r, sText As String

Set oRegExp = CreateObject("VBScript.RegExp")
oRegExp.Pattern = "(\+7)(\d{3})(\d{3})(\d{4})"
Set oRes = oRegExp.Execute(str)

If oRes.Count > 0 Then
     For Each r In oRes
         sText = sText & ", 8-" & r.submatches(1) & "-" & r.submatches(2) & "-" & r.submatches(3)
     Next
     phone = Mid(sText, 3, Len(sText) - 2)
Else
     phone = str
End If

End Function
[/vba]
К сообщению приложен файл: 0507870-1-.xls (37.5 Kb)


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Четверг, 11.09.2014, 15:03
 
Ответить
Сообщениену и я свои 5коп внесу:
[vba]
Код
Function phone(str) As String
     Dim oRegExp As Object, oRes As Object, r, sText As String

Set oRegExp = CreateObject("VBScript.RegExp")
oRegExp.Pattern = "(\+7)(\d{3})(\d{3})(\d{4})"
Set oRes = oRegExp.Execute(str)

If oRes.Count > 0 Then
     For Each r In oRes
         sText = sText & ", 8-" & r.submatches(1) & "-" & r.submatches(2) & "-" & r.submatches(3)
     Next
     phone = Mid(sText, 3, Len(sText) - 2)
Else
     phone = str
End If

End Function
[/vba]

Автор - SkyPro
Дата добавления - 11.09.2014 в 15:02
ikki Дата: Четверг, 11.09.2014, 15:17 | Сообщение № 16
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
Сергей, вариант с регулярками можно записать покороче ;)[vba]
Код
Sub f()
     Dim r As Object: Set r = CreateObject("vbscript.regexp")
     r.Pattern = "(?:\+7)(\d{3})(\d{3})(\d{4})": r.Global = True
     For Each c In ActiveSheet.[a2:a22].Cells: c.Value = r.Replace(c.Text, "8-$1-$2-$3"): Next
End Sub
[/vba]и, кстати, данный код будет работать и для случаев, если в ячейке более одного "телефона" вида +71234567890


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
СообщениеСергей, вариант с регулярками можно записать покороче ;)[vba]
Код
Sub f()
     Dim r As Object: Set r = CreateObject("vbscript.regexp")
     r.Pattern = "(?:\+7)(\d{3})(\d{3})(\d{4})": r.Global = True
     For Each c In ActiveSheet.[a2:a22].Cells: c.Value = r.Replace(c.Text, "8-$1-$2-$3"): Next
End Sub
[/vba]и, кстати, данный код будет работать и для случаев, если в ячейке более одного "телефона" вида +71234567890

Автор - ikki
Дата добавления - 11.09.2014 в 15:17
SkyPro Дата: Четверг, 11.09.2014, 15:58 | Сообщение № 17
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
ikki, красиво.


skypro1111@gmail.com
 
Ответить
Сообщениеikki, красиво.

Автор - SkyPro
Дата добавления - 11.09.2014 в 15:58
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Номер телефона в один вид (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!