Страницы: 1
RSS
Извлечь из текста числа: возраст (2 значное) и номер телефона (11 значное)
 
Есть ячейка, где содержится текст примерно такого вида:
"Иванова Ульяна Викторовна, 89821234567, Тюмень 17 лет" порядок и длина текста всё время разные

Как вывести в отдельные 2 ячейки телефон и возраст? Есть ли формула? Либо макросом тоже наверное можно, если есть вариант попроще, а то с массивами ещё не разобрался
 
UDF
Код
Function iNomer(cell$)
 With CreateObject("VBScript.RegExp")
     .Global = True
     .IgnoreCase = True
     .Pattern = "\d{11}"
     If .test(cell) Then
       iNomer = .Execute(cell)(0)
     End If
 End With
End Function
Function iAge(cell$)
 With CreateObject("VBScript.RegExp")
     .Global = True
     .IgnoreCase = True
     .Pattern = "\d{1,2}(?=\sлет)"
     If .test(cell) Then
       iAge = .Execute(cell)(0)
     End If
 End With
End Function
 
Спасибо огромное. Я так понял, строка Pattern = "\d{1,2}(?=\sлет)"  находит цифру 1 или 2 знаков перед "лет" Только там всегда будет  именно 2 значное число и иногда не будет "лет", иногда будет просто цифра, всегда в промежутке с 17 по 35
 
Цитата
иногда будет просто цифра, всегда в промежутке с 17 по 35
Замените
Код
    .Pattern = "\b\d{2}\b"
Изменено: Kuzmich - 28.06.2020 17:35:35
 
Отлично! Спасибо!
 
Если будет 33 года, то можно
Код
.Pattern = "\d{2}(?=\sлет|\sгод)"
 
=MAX(IFERROR(--MID(A1;ROW(1:99);11);))
=--MID(SUBSTITUTE(" "&TRIM(SUBSTITUTE(SUBSTITUTE(A1;",";" ");".";" "));" ";REPT(" ";LEN(A1)));MATCH(1=1;ABS(IFERROR(--MID(SUBSTITUTE(" "&TRIM(SUBSTITUTE(SUBSTITUTE(A1;",";" ");".";" "));" ";REPT(" ";LEN(A1)));ROW(A1:INDEX(A:A;LEN(A1)))*LEN(A1);LEN(A1));)-26)<10;)*LEN(A1);LEN(A1))
Изменено: БМВ - 29.06.2020 08:07:11
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх