Профессиональные приемы работы в Microsoft Excel

Обмен опытом => Microsoft Excel => Тема начата: GWolf от 10.05.2023, 21:19

Название: Вытащить данные по шаблону из строки.
Отправлено: GWolf от 10.05.2023, 21:19
Доброго дня!
В прилагаемом примере в колонке B, приведены примеры строковых записей из которых нужно "вытащить" данные согласно шаблонам, указанным в ячейках колонок C и D. Пробовал конструкцию: Sub poSablonu()
    Dim clll As Range
    Dim stroka As String
    Dim Shablon As String
   
    Set clll = Selection
    stroka = clll.Text
    Shablon = clll.Offset(, 1).Text

    If stroka Like Shablon Then
        Stop
    Else
        Stop
    End If
   
    Set clll = Nothing
End Sub
- НЕ работает. Помогите, пожалуйста!
Название: От: Вытащить данные по шаблону из строки.
Отправлено: elovkov от 11.05.2023, 09:34
А чего просто не вытащить текст формулой?
=ПСТР(B4;ПОИСК("просчет";B4)-3;25)аа, со второй маской посложнее, да)
Хм, не получается в одной формуле дважды ПСТР и ПОИСКом использовать, с начала искать начинает, а не в вырезанном куске(
ага, победил)))
=ПСТР(B4;ПОИСК("до ";B4;ПОИСК("№";B4));17)
Название: От: Вытащить данные по шаблону из строки.
Отправлено: Serge 007 от 11.05.2023, 10:53
Здравствуйте
Если нужно именно макросом:
Sub poSablonu()
Dim clll As Range
    For Each clll In [b4:b8] 'Selection
        clll.Offset(, 3) = Mid(clll, InStr(clll, clll.Offset(, 1)), 24)
        clll.Offset(, 4) = Mid(clll, InStr(InStr(clll, clll.Offset(, 1)) + 25, clll, clll.Offset(, 2), 0) + 1, 11)
    Next
End Sub
Алгоритм почти тот же, что предложил Юрий ;)
Название: От: Вытащить данные по шаблону из строки.
Отправлено: Serge 007 от 11.05.2023, 10:59
Цитата: elovkov от 11.05.2023, 09:34не получается в одной формуле дважды ПСТР и ПОИСКом использовать, с начала искать начинает
У функции ПОИСК() есть третий аргумент - Нач_позиция
Используйте его:=ПСТР(B4;НАЙТИ("до";B4;ПОИСК("до";B4)+1);11)
Название: От: Вытащить данные по шаблону из строки.
Отправлено: elovkov от 11.05.2023, 11:14
Ну я в итоге через него выкрутил, да, нашел в строке "№")
Название: От: Вытащить данные по шаблону из строки.
Отправлено: Serge 007 от 11.05.2023, 11:17
Цитата: elovkov от 11.05.2023, 11:14нашел в строке "№"
А если "№" в строке не будет? ;)
Решение с двойным поиском - универсальное

Название: От: Вытащить данные по шаблону из строки.
Отправлено: elovkov от 11.05.2023, 11:26
Ну конкретно тут № торгов, вроде должон быть) Хотя да, второе "до" более гарантировано, раз сразу маска на него настроена