проблема стара как мир. нужно извлечь номера телефонов из текста. телефоны записаны в разных форматах (6 цифр, 10 цифр, 11 цифр, +7) располагаются в разных местах в ячейке пример во вложении. в ячейках помимо телефонов встречаются и другие цифры. читал форум, не получилось найти решение...
проблема стара как мир. нужно извлечь номера телефонов из текста. телефоны записаны в разных форматах (6 цифр, 10 цифр, 11 цифр, +7) располагаются в разных местах в ячейке пример во вложении. в ячейках помимо телефонов встречаются и другие цифры. читал форум, не получилось найти решение...ekuritsyn
Function Phone(str$) With CreateObject("VBScript.RegExp") .Pattern = "(((\+7|8)(|-| )?)?((\(|-| )?\d{3}(\)|-| )?){2})?((-| )?\d{2}){2,3}" Phone = IIf(.Test(str), Trim(.Execute(str)(0)), "") End With End Function
[/vba]
еще вариант с UDF [vba]
Код
Function Phone(str$) With CreateObject("VBScript.RegExp") .Pattern = "(((\+7|8)(|-| )?)?((\(|-| )?\d{3}(\)|-| )?){2})?((-| )?\d{2}){2,3}" Phone = IIf(.Test(str), Trim(.Execute(str)(0)), "") End With End Function
Здравствуйте уважаемые форумчане, столкнулся с такой проблемой. Сразу оговорюсь что пользователь начинающий (exel) потому сильно не пинайте С копировал из одной программы данные с цифрами в ексель (числа) и они почему-то стали отображаться по-разному все. Какие-то смещены вправо а какие-то выравниваются с левой стороны, я так понимаю что это из-за разности форматов. Те, что справа это воспринимается как текст а те что слева как числа. Вот и вопрос возник, как все перевести в формат числа? Менял формат выделенных ячеек, ничего не получилось. Одни товарищи сказали что нужно руками все переписывать, но я сомневаюсь в этом. Какое-то совсем дикое решение на мой взгляд. Потому что может быть и 1000 ячеек и 5000. Руками не вариант. Уверен что есть решение, и оно весьма просто должно быть. *** Я не прошу дать мне готовый ответ, буду рад ссылке, что читать и куда смотреть. Сам прочитаю и разберусь. Но куда смотреть сейчас просто не могу сообразить.
Заранее спасибо! Тему не стал новую создавать, показалось что похожи. [moder]А зря. Почитайте Правила форума, там как раз про это написано. Эта тема закрыта, создавайте свою.
Здравствуйте уважаемые форумчане, столкнулся с такой проблемой. Сразу оговорюсь что пользователь начинающий (exel) потому сильно не пинайте С копировал из одной программы данные с цифрами в ексель (числа) и они почему-то стали отображаться по-разному все. Какие-то смещены вправо а какие-то выравниваются с левой стороны, я так понимаю что это из-за разности форматов. Те, что справа это воспринимается как текст а те что слева как числа. Вот и вопрос возник, как все перевести в формат числа? Менял формат выделенных ячеек, ничего не получилось. Одни товарищи сказали что нужно руками все переписывать, но я сомневаюсь в этом. Какое-то совсем дикое решение на мой взгляд. Потому что может быть и 1000 ячеек и 5000. Руками не вариант. Уверен что есть решение, и оно весьма просто должно быть. *** Я не прошу дать мне готовый ответ, буду рад ссылке, что читать и куда смотреть. Сам прочитаю и разберусь. Но куда смотреть сейчас просто не могу сообразить.
Заранее спасибо! Тему не стал новую создавать, показалось что похожи. [moder]А зря. Почитайте Правила форума, там как раз про это написано. Эта тема закрыта, создавайте свою.Gekko
Во вложении несколько сложных случаев. Можно их как-то учесть в формуле, чтобы она сделала правильную выборку? [moder]Ну да, там я поторопился, пожалуй. Открыл ту тему и перенес туда этот пост
Во вложении несколько сложных случаев. Можно их как-то учесть в формуле, чтобы она сделала правильную выборку? [moder]Ну да, там я поторопился, пожалуй. Открыл ту тему и перенес туда этот постekuritsyn
Function Phone(str$) With CreateObject("VBScript.RegExp") .Global = True .Pattern = "(((\+7|8)(|-| )?)?((\(|-| )?\d{3}(\)|-| )?){2}((-| )?\d{2}){2})|\d{2}((-| )?\d{2}){2}" If .Test(str) Then Dim Item As Object For Each Item In .Execute(str) Phone = Phone & IIf(Phone > "", vbLf, "") & Trim(Item) Next End If End With End Function
[/vba]
поправочка... [vba]
Код
Function Phone(str$) With CreateObject("VBScript.RegExp") .Global = True .Pattern = "(((\+7|8)(|-| )?)?((\(|-| )?\d{3}(\)|-| )?){2}((-| )?\d{2}){2})|\d{2}((-| )?\d{2}){2}" If .Test(str) Then Dim Item As Object For Each Item In .Execute(str) Phone = Phone & IIf(Phone > "", vbLf, "") & Trim(Item) Next End If End With End Function