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

Вход

Регистрация

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

 

= Мир MS Excel/Сортировка номеров телефонов в международный формат - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 212»
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Сортировка номеров телефонов в международный формат (Формулы/Formulas)
Сортировка номеров телефонов в международный формат
shevchenko1108 Дата: Понедельник, 15.05.2017, 15:52 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Есть файл с номерами телефонов в непонятном формате, нужно изменить их в международный. При чём в некоторых строках встречается по два номера. Как их отсортировать? Для примера прикреплю Укр номера
К сообщению приложен файл: primer.xlsx(8Kb)
 
Ответить
СообщениеЕсть файл с номерами телефонов в непонятном формате, нужно изменить их в международный. При чём в некоторых строках встречается по два номера. Как их отсортировать? Для примера прикреплю Укр номера

Автор - shevchenko1108
Дата добавления - 15.05.2017 в 15:52
shevchenko1108 Дата: Четверг, 18.05.2017, 11:24 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Может у кого-то хоть какие-то варианты есть?
 
Ответить
СообщениеМожет у кого-то хоть какие-то варианты есть?

Автор - shevchenko1108
Дата добавления - 18.05.2017 в 11:24
buchlotnik Дата: Четверг, 18.05.2017, 11:44 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3099
Репутация: 850 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
shevchenko1108, покажите в примере в столбце B что должно получиться - наверняка решение найдётся в разы быстрее


каждому For - Next!
платная помощь:
ЯД: 410012595572239
buchlotnik@mail.ru


Сообщение отредактировал buchlotnik - Четверг, 18.05.2017, 11:46
 
Ответить
Сообщениеshevchenko1108, покажите в примере в столбце B что должно получиться - наверняка решение найдётся в разы быстрее

Автор - buchlotnik
Дата добавления - 18.05.2017 в 11:44
shevchenko1108 Дата: Четверг, 18.05.2017, 11:55 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Должно вот так получится
К сообщению приложен файл: 5781529.xlsx(9Kb)
 
Ответить
СообщениеДолжно вот так получится

Автор - shevchenko1108
Дата добавления - 18.05.2017 в 11:55
buchlotnik Дата: Четверг, 18.05.2017, 12:11 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3099
Репутация: 850 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
навскидку на коленке UDF [vba]
Код
Function telefon(t$)
    With CreateObject("VBScript.Regexp")
        .Global = True
        .Pattern = "\D+"
        tel = .Replace(t, "")
        End With
        Select Case Len(t)
        Case Is = 9: telefon = "380" & tel
        Case Is = 10: telefon = "38" & tel
        Case Is = 12: telefon = tel
        Case Is > 12
        If Left(tel, 1) = "0" Then
        telefon = "38" & Left(tel, 10)
        Else
        telefon = "380" & Left(tel, 9)
        End If
        End Select
End Function
[/vba]
К сообщению приложен файл: 5781529.xlsm(16Kb)


каждому For - Next!
платная помощь:
ЯД: 410012595572239
buchlotnik@mail.ru
 
Ответить
Сообщениенавскидку на коленке UDF [vba]
Код
Function telefon(t$)
    With CreateObject("VBScript.Regexp")
        .Global = True
        .Pattern = "\D+"
        tel = .Replace(t, "")
        End With
        Select Case Len(t)
        Case Is = 9: telefon = "380" & tel
        Case Is = 10: telefon = "38" & tel
        Case Is = 12: telefon = tel
        Case Is > 12
        If Left(tel, 1) = "0" Then
        telefon = "38" & Left(tel, 10)
        Else
        telefon = "380" & Left(tel, 9)
        End If
        End Select
End Function
[/vba]

Автор - buchlotnik
Дата добавления - 18.05.2017 в 12:11
shevchenko1108 Дата: Четверг, 18.05.2017, 12:59 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Окей. А как тогда быть к примеру вот в такой ситуации?
К сообщению приложен файл: primer2.xlsx(9Kb)
 
Ответить
СообщениеОкей. А как тогда быть к примеру вот в такой ситуации?

Автор - shevchenko1108
Дата добавления - 18.05.2017 в 12:59
Udik Дата: Четверг, 18.05.2017, 13:10 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1589
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Не понял вот этого, на 11 строке
Цитата

(029) 689-59-57 (029) 756-48-53 -> 375296895957



вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеНе понял вот этого, на 11 строке
Цитата

(029) 689-59-57 (029) 756-48-53 -> 375296895957


Автор - Udik
Дата добавления - 18.05.2017 в 13:10
buchlotnik Дата: Четверг, 18.05.2017, 13:10 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3099
Репутация: 850 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
Цитата
как тогда быть
примеры приводить сразу вменяемые, может у кого и не отпадёт желание помогать


каждому For - Next!
платная помощь:
ЯД: 410012595572239
buchlotnik@mail.ru
 
Ответить
Сообщение
Цитата
как тогда быть
примеры приводить сразу вменяемые, может у кого и не отпадёт желание помогать

Автор - buchlotnik
Дата добавления - 18.05.2017 в 13:10
shevchenko1108 Дата: Четверг, 18.05.2017, 13:21 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Udik, 375 это код Белоруссии, дальше оператор, и номер 296895957
 
Ответить
СообщениеUdik, 375 это код Белоруссии, дальше оператор, и номер 296895957

Автор - shevchenko1108
Дата добавления - 18.05.2017 в 13:21
shevchenko1108 Дата: Четверг, 18.05.2017, 13:23 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
buchlotnik, Сори, не хотел давать большой пример, хочется самому разобраться.
 
Ответить
Сообщениеbuchlotnik, Сори, не хотел давать большой пример, хочется самому разобраться.

Автор - shevchenko1108
Дата добавления - 18.05.2017 в 13:23
buchlotnik Дата: Четверг, 18.05.2017, 13:26 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3099
Репутация: 850 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
shevchenko1108, причём тут большой - нужен пример со всеми возможными вариантами - откуда можно раздуплить, что 029 - бульбаши? и кто ещё в базе есть - казахи, узбеки?


каждому For - Next!
платная помощь:
ЯД: 410012595572239
buchlotnik@mail.ru


Сообщение отредактировал buchlotnik - Четверг, 18.05.2017, 13:29
 
Ответить
Сообщениеshevchenko1108, причём тут большой - нужен пример со всеми возможными вариантами - откуда можно раздуплить, что 029 - бульбаши? и кто ещё в базе есть - казахи, узбеки?

Автор - buchlotnik
Дата добавления - 18.05.2017 в 13:26
shevchenko1108 Дата: Четверг, 18.05.2017, 13:31 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
buchlotnik, Только казахи ещё. Но для примера сойдет и без них.
 
Ответить
Сообщениеbuchlotnik, Только казахи ещё. Но для примера сойдет и без них.

Автор - shevchenko1108
Дата добавления - 18.05.2017 в 13:31
buchlotnik Дата: Четверг, 18.05.2017, 13:35 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3099
Репутация: 850 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
Цитата
сойдет и без них
что ж, удачи


каждому For - Next!
платная помощь:
ЯД: 410012595572239
buchlotnik@mail.ru
 
Ответить
Сообщение
Цитата
сойдет и без них
что ж, удачи

Автор - buchlotnik
Дата добавления - 18.05.2017 в 13:35
Udik Дата: Четверг, 18.05.2017, 13:44 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 1589
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Получается, если встречаем два номера в ячейке, то второй отбрасываем. Хотелось бы узнать какие варианты сочетаний номеров существуют, и сколько номеров максимум может быть.


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеПолучается, если встречаем два номера в ячейке, то второй отбрасываем. Хотелось бы узнать какие варианты сочетаний номеров существуют, и сколько номеров максимум может быть.

Автор - Udik
Дата добавления - 18.05.2017 в 13:44
shevchenko1108 Дата: Четверг, 18.05.2017, 13:51 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Udik, Да, второй отбрасывается. Максимум может быть два номера. Сочетание может быть только такое как в примере.
 
Ответить
СообщениеUdik, Да, второй отбрасывается. Максимум может быть два номера. Сочетание может быть только такое как в примере.

Автор - shevchenko1108
Дата добавления - 18.05.2017 в 13:51
Udik Дата: Четверг, 18.05.2017, 15:58 | Сообщение № 16
Группа: Друзья
Ранг: Старожил
Сообщений: 1589
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Что-то такое

[vba]
Код

Function telefon(t$) As String
    With CreateObject("VBScript.Regexp")
    
        .Global = True
        .Pattern = "\((\d+)\)"
        If .test(t) Then
            Set arrw = .Execute(t)
            str1 = arrw.Item(0)
            arrw2 = Split(t, str1)
            str1 = Int(arrw.Item(0).submatches.Item(0))
            If InStr(t, str1) > 2 Then
                tel = str1 & arrw2(1)
            Else
                tel = str1 & arrw2(0)

            End If
        Else
            tel = t
        End If
        
        .Pattern = "\D+"
        tel = .Replace(tel, "")
      
    End With
    If str1 = "95" Then
        pref = "380"
    ElseIf str1 = "29" Then
        pref = "375"
    End If
    Select Case Len(tel)
    Case Is = 9: telefon = pref & tel
    Case Is = 10: telefon = "38" & tel
    Case Is = 12: telefon = tel
    Case Is > 12
    If Left(tel, 1) = "0" Then
        telefon = "38" & Left(tel, 10)
    Else
        telefon = "380" & Left(tel, 9)
    End If
    End Select
End Function
[/vba]


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Четверг, 18.05.2017, 15:59
 
Ответить
СообщениеЧто-то такое

[vba]
Код

Function telefon(t$) As String
    With CreateObject("VBScript.Regexp")
    
        .Global = True
        .Pattern = "\((\d+)\)"
        If .test(t) Then
            Set arrw = .Execute(t)
            str1 = arrw.Item(0)
            arrw2 = Split(t, str1)
            str1 = Int(arrw.Item(0).submatches.Item(0))
            If InStr(t, str1) > 2 Then
                tel = str1 & arrw2(1)
            Else
                tel = str1 & arrw2(0)

            End If
        Else
            tel = t
        End If
        
        .Pattern = "\D+"
        tel = .Replace(tel, "")
      
    End With
    If str1 = "95" Then
        pref = "380"
    ElseIf str1 = "29" Then
        pref = "375"
    End If
    Select Case Len(tel)
    Case Is = 9: telefon = pref & tel
    Case Is = 10: telefon = "38" & tel
    Case Is = 12: telefon = tel
    Case Is > 12
    If Left(tel, 1) = "0" Then
        telefon = "38" & Left(tel, 10)
    Else
        telefon = "380" & Left(tel, 9)
    End If
    End Select
End Function
[/vba]

Автор - Udik
Дата добавления - 18.05.2017 в 15:58
shevchenko1108 Дата: Четверг, 18.05.2017, 16:26 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Udik, В данном варианте корректно форматирует только номера Белоруссии, и то только те которые начинаются с 375(
 
Ответить
СообщениеUdik, В данном варианте корректно форматирует только номера Белоруссии, и то только те которые начинаются с 375(

Автор - shevchenko1108
Дата добавления - 18.05.2017 в 16:26
Udik Дата: Четверг, 18.05.2017, 16:31 | Сообщение № 18
Группа: Друзья
Ранг: Старожил
Сообщений: 1589
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Ну не знаю, у меняя более-менее нормально показывает.
К сообщению приложен файл: 9532859.jpg(77Kb)


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеНу не знаю, у меняя более-менее нормально показывает.

Автор - Udik
Дата добавления - 18.05.2017 в 16:31
shevchenko1108 Дата: Четверг, 18.05.2017, 16:43 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Udik, Можете файл примера прикрепить?
 
Ответить
СообщениеUdik, Можете файл примера прикрепить?

Автор - shevchenko1108
Дата добавления - 18.05.2017 в 16:43
Udik Дата: Четверг, 18.05.2017, 17:02 | Сообщение № 20
Группа: Друзья
Ранг: Старожил
Сообщений: 1589
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
На листе функция подглючивает, но если вызвать из тестовой, нормально значения возвращает.
К сообщению приложен файл: 0t.xlsm(19Kb)


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеНа листе функция подглючивает, но если вызвать из тестовой, нормально значения возвращает.

Автор - Udik
Дата добавления - 18.05.2017 в 17:02
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Сортировка номеров телефонов в международный формат (Формулы/Formulas)
Страница 1 из 212»
Поиск:

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