Страницы: 1
RSS
Извлечение цифр с +
 
Добрый день! Помогите... У меня 800 строк формат csv мне нужно извлечь номера телефонов с окончанием +7   (Пример +77028374657) а по факту начинается или с 8 или со скобками и стире (8 (701-456-23-66))
Изменено: ivantssp - 19.05.2018 19:23:48
 
ivantssp, добрый и Вам. Файл-пример нужен строк на 20 со всевозможными вариантами данных.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Цитата
ivantssp написал:
извлечь номера телефонов с окончанием +7   (Пример +77028374657)
? это начало, не окончание ... : / ... ?
 
нужен файл-пример,как вариант функция в C1
 
Код
Function bbb$(t$)
With CreateObject("VBScript.RegExp"): .Pattern = "[-8\(\) ]": .Global = True: bbb = "+7" & .Replace(t, "")
End With
End Function
Изменено: кузя1972 - 19.05.2018 21:00:20
 
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(" " & A5;" 8"; "+7");"(8 ";"+7");"(";"");")";"");"-";"");" ";"")
Изменено: БМВ - 19.05.2018 21:16:41
По вопросам из тем форума, личку не читаю.
 
кузя1972, 8 может быть не только в начале номера.
И при таком шаблоне будут убраны все восьмерки в номере.
 
А если там есть еще что-то вокруг номера?  
БМВ, если Вы не против, можно Вашу формулу внутри "ПСТР" поселить?  
 
_Igor_61, я то не против, но было б лучше если б ТС в наши формулы ввернул свои данные :-)

или так

=LEFT(TRIM(MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(" "&A2;" 8";"+7");"(8 ";"+7");"(";"");")";"");"-";"");" ";"");"+";REPT(" ";LEN(A2))&"+");LEN(A2);2*LEN(A2)));12)
Изменено: БМВ - 19.05.2018 23:13:51
По вопросам из тем форума, личку не читаю.
 
в ответ на изменение исходного файл-примера в #6 -вариант функции в столбце C

 
Код
Function ccc$(t$)
   Dim txt$
With CreateObject("VBScript.RegExp")
.Pattern = "^(?: 8 |tel:  8 |\(?": txt = .Replace(t, "")
.Pattern = "[-\(\) ]": .Global = True:  ccc = "+7" & .Replace(txt, "")
End With
End Function
Изменено: кузя1972 - 19.05.2018 23:27:12
 
кузя1972, а, если будет такой номер +7 921 345 67 89, посмотрите, что выдает ваш паттерн.
 
Kuzmich,в ответ на #10 подкорректировал функцию в столбце C,кстати в предложенном Вашем  варианте #10 не работает и формула в столбце B .
Паттернов на все случаи жизни не бывает,нужен файл-пример создателя темы в окончательном варианте ,
иначе можно бесконечно придумывать варианты файл-примера опытными пользователями
 
Код
Function ccc$(t$)
  Dim txt$, t1$
t1 = Replace(Replace(t, " ", ""), Chr(160), "")
With CreateObject("VBScript.RegExp"): .Pattern = "\+7\d{10}"
 If .test(t1) Then ccc = .Execute(t1)(0): Exit Function
.Pattern = "^(?:8 |tel:  8 |\(?": txt = .Replace(t, "")
.Pattern = "[-\(\) ]": .Global = True:  ccc = "+7" & .Replace(txt, "")
End With
End Function
Изменено: кузя1972 - 20.05.2018 10:27:56
 
Цитата
кузя1972 написал: иначе можно бесконечно придумывать варианты файл-примера опытными пользователями
Так куда спешите?
 
кузя1972, У вас в сообщении 9 и 11 код паттерна не совпадает с кодом в примере
Код
.Pattern = "^(?:8 |tel:  8 |\(?8)": txt = .Replace(t, "")
Страницы: 1
Наверх