Есть файл с номерами телефонов в непонятном формате, нужно изменить их в международный. При чём в некоторых строках встречается по два номера. Как их отсортировать? Для примера прикреплю Укр номера
Есть файл с номерами телефонов в непонятном формате, нужно изменить их в международный. При чём в некоторых строках встречается по два номера. Как их отсортировать? Для примера прикреплю Укр номераshevchenko1108
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]
навскидку на коленке 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
shevchenko1108, причём тут большой - нужен пример со всеми возможными вариантами - откуда можно раздуплить, что 029 - бульбаши? и кто ещё в базе есть - казахи, узбеки?
shevchenko1108, причём тут большой - нужен пример со всеми возможными вариантами - откуда можно раздуплить, что 029 - бульбаши? и кто ещё в базе есть - казахи, узбеки?buchlotnik
Сообщение отредактировал buchlotnik - Четверг, 18.05.2017, 13:29
Получается, если встречаем два номера в ячейке, то второй отбрасываем. Хотелось бы узнать какие варианты сочетаний номеров существуют, и сколько номеров максимум может быть.
Получается, если встречаем два номера в ячейке, то второй отбрасываем. Хотелось бы узнать какие варианты сочетаний номеров существуют, и сколько номеров максимум может быть.Udik
вот вам барабан яд 41001231307558 wm R419131876897 udik1968@gmail.com
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]
Что-то такое
[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