- 帖子
- 1447
- 主題
- 40
- 精華
- 0
- 積分
- 1471
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Excel 2010 & 2016
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2020-7-15
- 最後登錄
- 2025-5-5
|
13#
發表於 2023-5-31 11:22
| 只看該作者
回復 12# 准提部林
謝謝論壇,謝謝前輩
後學藉此帖學習前輩的方案,方案學習心得註解如下,請前輩再指導
執行前:
執行結果:
Option Explicit
Sub TEST()
Dim R&, Arr, T$, TT$, TS, xD, i&
'↑宣告變數
Set xD = CreateObject("Scripting.Dictionary")
'↑令xD變數是 字典
Arr = Range([D1], [D65536].End(xlUp)(2))
'↑令Arr變數是 二維陣列,以D欄儲存格值帶入陣列
For i = 2 To UBound(Arr)
If Arr(i, 1) <> "" Then xD(Arr(i, 1) & "") = ""
Next i
'↑設順迴圈將陣列值當key,item是空的,納入xD字典裡
Arr = Range([A2], [A65536].End(xlUp)(2))
'↑令Arr陣列換裝A欄儲存格值(不含標題列)
For i = 1 To UBound(Arr)
'↑設順迴圈
TT = "": T = Replace(Arr(i, 1), "=", "+")
'↑令TT變數是 空白,令T變數是 陣列值置換 "=" 為 "+"
If T = "" Then GoTo 101
'↑如果T變數是空白!就跳到標示101位置繼續執行(空白不處理)
For Each TS In Split(T, "+")
'↑設逐項迴圈!令TS變數是 (T變數以"+"分割後的一維陣列)陣列值
If TS <> "" And xD.Exists(TS & "") Then TT = TT & "、" & TS
'↑如果TS變數不是空白,且TS變數不在xD字典裡?
'令TS變數(字串)放在TT變數(字串)後方,以 "、" 間隔
Next
Arr(i, 1) = Mid(TT, 2)
'↑令TT變數取第2字以後的字元寫入Arr陣列裡
101: Next i
[B2].Resize(UBound(Arr)) = Arr
'↑令Arr陣列值從[B2]開始寫入儲存格裡
End Sub |
|