Страницы: 1
RSS
Извлечь из текста фрагмент: 3 цифры, дефис, 7 цифр
 
День добрый!
Не могу справиться с задачей
В ячейке может быть любое количество знаков и текст всегда разный, но при этом во всех ячейках есть одинаковый номер системы, прмерно такой
001-2736894
3 цифры, дефис, 7 цифр
Необходимо этот номер достать.
Надеюсь на Вашу помощь  
 
=ПСТР(A1;ПОИСК(" ???-??????? ";" "&A1&" ");11)
с Вашим файлов было бы понятней
 
например текст такой
зажим 205/125-1234567 12 29 11
Через Вашу формулу не получилось
В  Вашей формуле убрал пробелы и получилось немного лучше, при этом куда-то пропадают 0
Изменено: Luslav - 20.10.2017 10:50:17
 
=ПСТР(A1;ПОИСК("???-???????";A1);11)
 
как написал выше если в формуле есть 0, то он почем-то не берется
Спасибо за помощь, совсем забыл написать.
Изменено: Luslav - 20.10.2017 10:52:02
 
Luslav,
какой 0?
приложите файл с различными вариантами текста
 
Даже стало интересно.
В каком месте вы находите "не берущийся ноль"
 
Исправил
Прикладываю новый файл. По ощущениям смысл такой, нужно привязаться к тому что во всех вариациях может быть только одно вхождение символов "-???????" из них ? это всегда цифры, нужно понять как к это маске добавить предыдущие 3 цифры
 
=ПСТР(A2;ПОИСК("-";A2;5)-3;11)
 
vikttur, Спасибо! Формула подошла и работает!
Буду разбираться как она рассчитывает
 
Цитата
3 цифры, дефис, 7 цифр
UDF
Код
Function Fragment(cell$)
 With CreateObject("VBScript.RegExp")
     .Global = True
     .IgnoreCase = True
     .Pattern = "\d{3}-\d{7}"
     Fragment = .Execute(cell)(0)
 End With
End Function
 
Пока я старался накрутить рекурсивные проверки внутри формулы vikttur написал прекрасную лаконичную формулу.
Единственное, что я предлагаю уточнить: является ли необходимым обрабатывать тексты, которые не содержат лишних символов перед указанной маской? Вида:
Код
'205-0070451 nqsdfqwdf
 
IKor,
Спасибо за вопрос, да, это необходимо
 
Модификация формулы vikttur'а для этого случая
Код
=ПСТР(A2;ПОИСК("-";" "&A2;5)-4;11)
 
IKor,Спасибо!
 
ещё вариант функции
Код
Function uuu$(t$)
  With CreateObject("VBScript.RegExp"): .Pattern = "\d{3}\-\d{7}": uuu = .Execute(t)(0)
  End With
End Function
Изменено: sv2013 - 21.10.2017 01:16:00
Страницы: 1
Наверх