Страницы: 1
RSS
VBA: вхождение определенного шаблона в текстовую строку
 
Добрый день!

Мне необходимо найти, есть ли вхождение определенного шаблона в строку. Для этого я через оператор Like задаю шаблон и далее ищу его вхождение строки.
Тогда код выглядит следующим образом
Код
  For i = 1 To iLastRow
  
    StrGT = "*диаметр ##*"
If Worksheets("обработка").Cells(i, 2).Value Like StrGT Then
Worksheets("обработка").Cells(i, 3).Value = "+"
End if
Next i
Однако, мне нужно не только найти факт вхождения шаблона, но и обрабатывать найденный шаблон. Например, если одна из строк имеет следующий вид:
Цитата
квадрат со стороной 2, треугольник равнобедренный, круг диаметр 32, шестигранник"
Я хочу выхватить число 32 и записать его в соседний столбец.

Как это возможно реализовать?
 
Добрый день.
Мне предложенный в Приемах автором этого сайта вариант через регулярные выражения понравился. Почитайте, вдруг вам тоже зайдет?
Кому решение нужно - тот пример и рисует.
 

может быть можно так (с выгрузкой диаметра в 4-й столбец)

Код
For i = 1 To iLastRow
    StrGT = "*диаметр ##*"
    If Worksheets("обработка").Cells(i, 2).Value Like StrGT Then
        Worksheets("обработка").Cells(i, 3).Value = "+"
        a = Split(Cells(i, 2).Value, ",")
        For i = 0 To UBound(a)
            If InStr(1, a(i), "диаметр") > 0 Then b = Split(a(i), " "): Cells(i, 4) = b(UBound(b))
        Next    End If
Next i

 
Всем большое спасибо, буду ознакамливаться со статьей о регулярных выражениях.
 
На регулярках можно такой UDF'кой:
Скрытый текст

Будет тащить значение, расположенное после диаметра (цифры от 1 до 3) в текстовом виде и выдавать как результат.
Изменено: Пытливый - 05.04.2018 16:28:02
Кому решение нужно - тот пример и рисует.
 
Пытливый, спасибо)
 
Код
Worksheets("обработка").Cells(i, 3) = left(split(Worksheets("обработка").Cells(i, 2), "диаметр ")(1),2)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, лаконично)
Страницы: 1
Наверх