Sub Test()
Dim A, B, T$, Brr(1 To 6000, 1 To 4), xD, N&, u, v
'↑宣告變數
[F2:I6000].ClearContents
'↑結果欄儲存格 清除內容
Set xD = CreateObject("Scripting.Dictionary")
'↑令xD變數是 字典
For Each A In Range([A2], [A65536].End(xlUp)).Value
'↑設逐項迴圈!令A是A欄裡的儲存格值
For Each B In Split(Replace(A, Chr(10), " "), " ")
'↑設逐項迴圈!令B變數是 A變數被分割成一維陣列的一個陣列值
For i = 1 To Len(B) + 1
'↑設順迴圈
If Not IsNumeric(Right("x" & B, i)) Then v = i - 1: Exit For
'↑從字串的右往左側找非數字的字元位置i,令v變數是字元位置-1
Next
If v = 0 Then GoTo 101
'↑如果非數字的字元是字串的最後一個字!就跳到101標示位置繼續執行
T = Right(B, v): If xD(T) > 0 Then GoTo 101
'↑令T變數是B變數右側的連續數字,
'↑如果T變數查xD字典得item值 大於0 !
'就跳到101標示位置繼續執行(濾數字的重複)
u = 4: If Left(T, 1) = "1" Then u = 2: T = [G1] & T
'↑令u變數是 4(預設),
'如果T變數第1個字是1,令u變數是 2,且令T變數前面添加[G1]儲存格值
N = N + 1: Brr(N, 1) = Left(B, Len(B) - v): Brr(N, u) = T
'↑令N變數累加 1,令左側文字寫入Brr陣列第1欄,
'令右側文字依N/u變數寫入Brr陣列
xD(T) = 1: v = 0
'↑令以T變數當key,item是1,納入xD字典裡(給後面迴圈濾數字的重複)
101: Next
Next
If N > 0 Then [F2].Resize(N, 4) = Brr
'↑如果有資料!就令Brr陣列值帶入從[F2]開始的精確範圍儲存格
End Sub