- 帖子
- 1447
- 主題
- 40
- 精華
- 0
- 積分
- 1471
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Excel 2010 & 2016
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2020-7-15
- 最後登錄
- 2025-5-5
|
19#
發表於 2023-5-30 11:55
| 只看該作者
謝謝論壇,謝謝各位前輩
後學藉此帖練習陣列語字典,學習方案如下,請各位前輩指教
Option Explicit
Sub TEST()
Dim Brr, Y, i&, T$, T4$
'↑宣告變數
Set Y = CreateObject("Scripting.Dictionary")
'↑令Y變數是 字典
Brr = Range([D2], Cells(Rows.Count, 1).End(xlUp))
'↑令Brr變數是 二維陣列,以A~D欄第2列以下儲存格值帶入陣列中
For i = 1 To UBound(Brr)
'↑設順迴圈
T = Brr(i, 1) & Brr(i, 2): T4 = Brr(i, 4) & "|"
'↑令T變數是 第1欄與第2欄陣列值所組成的新字串,
'令T4變數是 第4欄陣列值連接 "|"符號所組成的新字串
If Y(T) <> T4 And Y(T) <> "" Then Y(T & "|") = "X" Else Y(T) = T4
'↑如果T變數查Y字典得item值與 T4變數不同,而且
'且T變數查Y字典得item值不是初始值!就令T變數連接"|"組成的新字串當key,
'item是"X",納入Y字典中,
'否則就令T變數當key,item是T4變數納入Y字典中
Next
For i = 1 To UBound(Brr)
'↑設順迴圈
Brr(i, 1) = Y(Brr(i, 1) & Brr(i, 2) & "|")
'↑令Brr陣列第1欄寫入 第1欄與第2欄陣列值連接"|"組成的新字串,
'查Y字典回傳item值
Next
[G2].Resize(UBound(Brr)) = Brr
'↑令從[G2]儲存格開始寫入Brr陣列值,超過此範圍的陣列值忽略
Set Y = Nothing: Erase Brr
'↑令釋放變數
End Sub |
|