Страницы: 1
RSS
Поиск данных в ячейке по маске и вынос в другой столбец
 
Добрый день

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

Столбец выглядит примерно так


Спасибо заранее за помощь :)
 
Для приведенных Вами форматов номеров телефонов в большинстве случаев можно использовать пользовательскую функцию:
Код
Function NumTel(rng As Range)
    Dim s As String, x
    Set x = CreateObject("VBScript.RegExp")
    x.Pattern = "8\d{10}": x.Global = True
    s = Replace(Replace(rng, "-", ""), " ", "")
    NumTel = x.Execute(s).Item(0)
End Function
Если возможны другие варианты записи номеров - укажите какие.
Пример использования во вложении.
Изменено: SAS888 - 18.08.2016 11:26:26
Чем шире угол зрения, тем он тупее.
 
А, где, прикрепленные файлы?
 
Kuzmich, картинка тоже прикреплённым файлом является. По ней SAS888 уже лечит. :)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
SAS888,спасибо большое!
По формату номеров посмотрел они еще могут быть без 8, т.е. просто 9516824931  ну и соответственно 951-682-49-31  либо 951 682 49 31  

И еще после применения функции к данной таблице получается следующий результат (на картинке 1 ), можно ли сделать чтобы номера телефонов были по порядку в отдельном столбце т.е. те ячейки где нету номера  телефона удалялись и получался результат как на картинке 2.
Изменено: staudio - 18.08.2016 17:43:14
 
добрый день,попробуйте такую функцию
 
Код
Function uuu(t$)
    t = Replace(Replace(t, " ", ""), "-", "")
 With CreateObject("VBScript.RegExp"): .Pattern = "(?:8|9)\d{9,}"
    If .test(t) Then uuu = .Execute(t)(0) Else uuu = ""
 End With
End Function
Изменено: sv2013 - 18.08.2016 17:48:42
 
Цитата
получается следующий результат (на картинке 1 ), можно ли сделать
... тоже на картинке? Вам помогющие файлы самостоятельно готовят, а Вы картинками кидаетесь
 
Цитата
vikttur написал:
... тоже на картинке? Вам помогющие файлы самостоятельно готовят, а Вы картинками кидаетесь
не совсем понял а что нужно сделать? )
 
Правила прочитать
Цитата
  2.3. Приложите файл(ы) с примером (общим весом не более 100 Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе.
 
Извиняюсь :)
Приложил файл
И посмотрел какие форматы еще нужны, в итоге:
911111111
911 111 11 11
911-111-11-11

7911111111
7911 111 11 11
7911-111-11-11

sv2013,спасибо большое за помощь, попробовал функцию, выделяет все телефоны но черезчур)) в некоторых ячейках выделяет не только номер телефона но и остальные цыфры которые есть в столбце.
Изменено: staudio - 18.08.2016 18:56:33
 
добавил,вариант функции uuu1 в столбце E для приложенного Вами файла(не указали как надо).

 
Код
Function uuu1(t$)
    t = Replace(Replace(t, "-", ""), " ", "")
 With CreateObject("VBScript.RegExp"): .Pattern = "(?:79|8|9)\d{8,11}\b"
    If .test(t) Then uuu1 = .Execute(t)(0) Else uuu1 = ""
 End With
End Function
Изменено: sv2013 - 18.08.2016 20:32:49
 
sv2013, спасибо большое это то что нужно.

Благодарю всех кто помогал решить проблему: SAS888, sv2013, и vikttur, за своевременные замечания :)
 
staudio
А из строки
Спб, Лиговский 185/39. 766-69-30, 26.10.1940,№ 173593
телефон 766-69-30 не нужен ?
И что за телефон 896438360500 ?
 
Kuzmich,
Нужны только сотовые номера.
Ну такие длинные я после сортировки всего столбца вручную удалю они будут в самом низу если по значению отсортировать так что ничего страшного.  
Изменено: staudio - 19.08.2016 09:21:12
Страницы: 1
Наверх