返回列表 上一主題 發帖

大筆資料換行處理與數字文字分隔問題

回復 2# 准提部林


    謝謝論壇,謝謝前輩指導
後學藉此帖學習前輩的方案,方案學習心得註解如下,請前輩再指導

執行前:


執行結果:



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
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 【時間成就一切】時間可以造就人格,可以成就事業,也可以儲積功德。
返回列表 上一主題