Задался вопросом определения телефона/телефонов, написанных нестандартным способом, с использованием цифроподобных знаков и букв. Знаю, что нужно использовать регулярные выражения. Но в них полный 0... В приложенном файле пример такого номера. Его нужно привести в нормальный формат (заменить всё на цифры) и вынести в столбец "Е".
Буду благодарен за любую помощь, включая ссылку на Теорию, касательно этого вопроса.
Здравствуйте!
Задался вопросом определения телефона/телефонов, написанных нестандартным способом, с использованием цифроподобных знаков и букв. Знаю, что нужно использовать регулярные выражения. Но в них полный 0... В приложенном файле пример такого номера. Его нужно привести в нормальный формат (заменить всё на цифры) и вынести в столбец "Е".
Буду благодарен за любую помощь, включая ссылку на Теорию, касательно этого вопроса.emkub
Понял. Посмотрите пожалуйста, можно ли улучшить/оптимизировать мой код? И помогите правильно написать For each. Это коды операторов, по которым должен осуществляться начальный поиск номера. А полный текст макроса в прикреплённом файле.
[vba]
Код
For i = 1 To 100
'Dim lst As New List Of String From {"050", "066", "067", "068", "069", "071", "073", "091", "093", "095", "096", "097", "098", "099"}
' Iterate through the list. 'For Each item As String In lst
If InStr(Cells(i, "m"), "09") > 0 Then For t = 3 To 20 tel = Mid(Cells(i, "m"), InStr(Cells(i, "m"), "09"), t) tel = Replace(tel, " ", "", 1) tel = Replace(tel, "-", "", 1) tel = Replace(tel, "_", "", 1) tel = Replace(tel, "О", "0", 1) tel = Replace(tel, "I", "1", 1) tel = Replace(tel, "|", "1", 1) tel = Replace(tel, "З", "3", 1) tel = Replace(tel, "Ч", "4", 1) tel = Replace(tel, "б", "6", 1) tel = Replace(tel, "Б", "6", 1) tel = Replace(tel, "В", "8", 1)
If Len(tel) = 10 Then GoTo 10 Next 10 Cells(i, "e") = "'" & tel End If
Next
[/vba]
Понял. Посмотрите пожалуйста, можно ли улучшить/оптимизировать мой код? И помогите правильно написать For each. Это коды операторов, по которым должен осуществляться начальный поиск номера. А полный текст макроса в прикреплённом файле.
[vba]
Код
For i = 1 To 100
'Dim lst As New List Of String From {"050", "066", "067", "068", "069", "071", "073", "091", "093", "095", "096", "097", "098", "099"}
' Iterate through the list. 'For Each item As String In lst
If InStr(Cells(i, "m"), "09") > 0 Then For t = 3 To 20 tel = Mid(Cells(i, "m"), InStr(Cells(i, "m"), "09"), t) tel = Replace(tel, " ", "", 1) tel = Replace(tel, "-", "", 1) tel = Replace(tel, "_", "", 1) tel = Replace(tel, "О", "0", 1) tel = Replace(tel, "I", "1", 1) tel = Replace(tel, "|", "1", 1) tel = Replace(tel, "З", "3", 1) tel = Replace(tel, "Ч", "4", 1) tel = Replace(tel, "б", "6", 1) tel = Replace(tel, "Б", "6", 1) tel = Replace(tel, "В", "8", 1)
If Len(tel) = 10 Then GoTo 10 Next 10 Cells(i, "e") = "'" & tel End If
Public Sub Проход() Dim Lst() As Variant, iLst As Long Lst = Array("050", "066", "067", "068", "069", "071", "073", "091", "093", "095", "096", "097", "098", "099")
Dim rng As Range Set rng = Worksheets("Лист1").Columns("m:m") Set rng = rng.SpecialCells(Type:=xlCellTypeConstants)
Dim eL As Range For Each eL In rng 'по ячейкам
For iLst = LBound(Lst) To UBound(Lst) ' по массиву 'Ваш код Next Next
Public Sub Проход() Dim Lst() As Variant, iLst As Long Lst = Array("050", "066", "067", "068", "069", "071", "073", "091", "093", "095", "096", "097", "098", "099")
Dim rng As Range Set rng = Worksheets("Лист1").Columns("m:m") Set rng = rng.SpecialCells(Type:=xlCellTypeConstants)
Dim eL As Range For Each eL In rng 'по ячейкам
For iLst = LBound(Lst) To UBound(Lst) ' по массиву 'Ваш код Next Next