/ / Как да отпечатам извлечения шаблон в колона, използвайки regex.execute и съвпадение на обект в vba? - regex, excel, vba, excel-vba

Как да отпечатам моя извлечен модел в колона, използвайки regex.execute и съвпадение на обект в vba? - regex, excel, vba, excel-vba

Аз съм с помощта на VBA да напишете sub да извлечете ПИН кодовеот дадени адреси в колона в работен лист на Excel. Аз бях в състояние да намери модел Regex за извличане на ПИН модел, но Im не може да изведе посочените извлечени игли в колона. Като начин да тествам дали регенерисът е в състояние да извлече шаблона от колона (е) минали собствеността Match.value от мач обект до msgbox и е в състояние да получи изход за всеки низ в msgbox.

Private Sub simpleRegex()
Dim strPattern As String: strPattern = "d{6}"
Dim Match As Object
Dim matches As Object

Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
Dim strInput As String
Dim Myrange As Range

Set Myrange = ActiveSheet.Range("B1:B30")

For Each cell In Myrange
If strPattern <> "" Then
strInput = cell.Value

With regex
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With

If regex.Test(strInput) Then
Set matches = regex.Execute(strInput)
For Each Match In matches
MsgBox (Match.Value) "A workaround I found to see if my pattern
"worked but I need to print Match.value
"in a column so this wont do
Next
Else
MsgBox ("Not matched")
End If
End If
Next
End Sub

Как да извлека структурния низ от обекта на съвпадението и да го отпечатам в колона (като U1: U30) за всяка клетка в моя диапазон B1: B30

TL; DR: Regex Pattern работи, но как да отпечатате извлечения модел в клетката

Отговори:

0 за отговор № 1

Какво ще кажете за събирането на мачовете, разделени в низ strMatches и напишете това в клетка?


Добавете това преди For Each cell In Myrange

Dim i As Long, strMatches As String
i = 1 "row number where we start to write

И заменете другия For Each с

strMatches = vbNullString
For Each Match In matches
strMatches = strMatches & Match.Value & ", " "collect all matches comma seprated
Next
If Not strMatches = vbNullString Then strMatches = Left(strMatches, Len(strMatches) - 2) "remove last comma
Worksheets("your-sheet-name").Range("U" & i).Value = strMatches "write the matches into cell
i = i + 1