返回列表 上一主題 發帖

[發問] (已解決)如何擷取不同類別代號的最後一筆資料

謝謝論壇,謝謝各位前輩
後學藉此帖練習VBA陣列語字典,學習方案如下,請各位前輩指教

執行前:


執行結果:



Option Explicit
Sub TEST()
Dim Brr, V, Y, R&, i&, T$, M%, K%
'↑宣告變數
Set Y = CreateObject("Scripting.Dictionary")
'↑令Y變數是 字典
Brr = Range([A1], Cells(Rows.Count, "A").End(xlUp))
'↑令Brr變數是 二維陣列,以A欄儲存格值帶入陣列中
For i = 2 To UBound(Brr)
'↑設順迴圈
   T = Left(Brr(i, 1), 2)
   '↑令T變數是左邊2字的字串
   K = Right(Brr(i, 1), 3)
   '↑令K變數是右邊3字轉為數值(因為K宣告是數值)
   M = Y(T)
   '↑令M變數是T變數查Y字典得到item,
   '一開始Y字典裡沒有此key時,item是初始值轉整數=0,
   '因為M宣告是整數值

   If M < K Then M = K
   '↑這是要比較出最大值
   Y(T) = M
   '↑令以T變數當key,item是當下的最大值放回字典
Next
For Each V In Y.KEYS
'↑設逐項迴圈!令V變數是 Y字典的key
   R = R + 1
   '↑令R變數累加 1
   Brr(R, 1) = V & Format(Y(V), "000")
   '↑令以組合字串(結果資料)覆蓋掉原Brr陣列值,
   '畢竟Brr的原資料已經用不到了,
   '如此就不必再設一個陣列裝結果資料
   '但是需要準確的知道結果資料到陣列的哪一列,如R變數或Y.Count

Next
[J2].Resize(Y.Count, 1) = Brr
'↑令Brr局部資料(結果資料)寫入儲存格中,超過此範圍的Brr陣列值忽略
Set Y = Nothing: Erase Brr
'↑令釋放變數
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 我們要做好社會的環保,也要做好內心的環保。
返回列表 上一主題