Chả là e cũng đang học thằng regex tiện cái e xài tập luyện luôn :v
Bạn thớt làm theo 2 bước dưới nhé:
Bước 1 chạy code sau
Bước 2 dùng text to column là xong rồi đấy
Nhân tiện em cũng muốn hỏi các anh chị. tại sao khi em dùng Pattern: Gi.+\s+(\d+) ở regex101 tách được theo mong muốn (https://regex101.com/r/smOlwU/1) , nhưng ở trong VBA thì lại không được ạ, nên buộc trong code e phải xài 2 lần pattern
Em xin cám ơn
Bạn thớt làm theo 2 bước dưới nhé:
Bước 1 chạy code sau
Bước 2 dùng text to column là xong rồi đấy
Nhân tiện em cũng muốn hỏi các anh chị. tại sao khi em dùng Pattern: Gi.+\s+(\d+) ở regex101 tách được theo mong muốn (https://regex101.com/r/smOlwU/1) , nhưng ở trong VBA thì lại không được ạ, nên buộc trong code e phải xài 2 lần pattern
Em xin cám ơn
Mã:
Sub tachgiamgia()
Dim i As Long, er As Long
Dim arr()
Dim VBR As Object, kq
Dim VBR2 As Object
Dim kqarr()
Set VBR = CreateObject("VBScript.RegExp")
Set VBR2 = CreateObject("VBScript.RegExp")
With Sheet2
er = .Range("A" & Rows.Count).End(3).Row
arr = .Range("A2:A" & er).Value
ReDim kqarr(1 To UBound(arr), 1 To 1)
For i = 1 To UBound(arr)
arr(i, 1) = CStr(arr(i, 1))
arr(i, 1) = Application.WorksheetFunction.Substitute(arr(i, 1), ",", "")
With VBR
.Global = True
.Pattern = "Gi.+(\d+)"
Set Matche1 = .Execute(arr(i, 1))
For Each Match In Matche1
With VBR2
.Global = True
.Pattern = "\d+"
Set matche2 = .Execute(Match)
For Each Match2 In matche2
If Len(Match2) > 3 Then
kq = kq & Match2.Value & ";"
kqarr(i, 1) = kq
End If
Next
End With
Next
End With
kq = Null
Next i
.[M2].Resize(UBound(arr), 1) = kqarr
End With
End Sub