Страницы: 1
RSS
Вычленить из ячейки с текстом номер договора через VBA
 
Добрый день!
Есть ячейка типа "текст цифры символы текст текст цифры-цифры текст цифры символы текст текст". (например "Оплата договора от 27.10.2019 по договору 123456-12345678 произведена").
Как через VBA можно вычленить тире и все что до следующего и до предыдущего за этим тире пробелами? Т.е. оставить только номер договора, маска у договора строго с тире, поэтому цепляюсь за него.
И, пожалуйста, не с помощью функцииа, а чтобы процедура была. :)

Спасибо.
 
Вот то, что вам нужно  https://www.planetaexcel.ru/techniques/7/4844/
 
Код
Function iDogovor(cell$)
 With CreateObject("VBScript.RegExp")
     .Pattern = "\d+-\d+"
     iDogovor = .Execute(cell)(0)
 End With
End Function

Остальное сами
 
Hellmaster , да, спасибо, это видел, не знал как это подружить с VBA просто.) Ниже кинули пример как.

Kuzmich, спасибо! А можно ведь это сделать не через Function? Чтобы на листе не делать отдельный столбец с отформатированными договорами, а в той же ячейке все манипуляции сделал макрос.
 
Можно сделать в столбце через функцию, затем скопировать и вставить значение на место исходного столбца.
Кому решение нужно - тот пример и рисует.
 
Всем спасибо, будем пробовать!
 
Цитата
а в той же ячейке все манипуляции сделал макрос
Если текст в столбце А
Код
Sub Dogovor()
Dim i As Long
Dim iLastRow As Long
 iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
   With CreateObject("VBScript.RegExp")
     .Pattern = "\d+-\d+"
    For i = 1 To iLastRow
      If .Test(Cells(i, 1)) Then
        Cells(i, 1) = .Execute(Cells(i, 1))(0)
      End If
    Next
   End With
End Sub
 
Kuzmich, вот это вообще так как надо!
Благодарю!
Страницы: 1
Наверх