返回列表 上一主題 發帖

三個欄位對比資料及讀取資料

本帖最後由 mdr0465 於 2024-3-1 12:56 編輯

回復 3# Andy2483

Andy 學兄,你好
大後輩正在努力重溫所有學兄給各位論壇後學的詳細注解,
但有一點大後輩不明白的,請學兄不厭其煩指導後輩

請看以下的紅色是我不明白的地方

Option Explicit
Sub TEST()
Dim Brr, Z, i&, T$
'↑宣告變數:&是長整數,$是字串變數,沒有指定的是通用型變數
Set Z = CreateObject("Scripting.Dictionary")
'↑令Z變數是 字典
Brr = Range([KH!E3], [KH!A65536].End(xlUp))
'↑令Brr變數是二維陣列,以儲存格值帶入
For i = 1 To UBound(Brr)
'↑設順迴圈!令i從1 到Brr陣列縱向最大索引列號
   T = Trim(Brr(i, 2)) & "/" & Val(Brr(i, 3)) & "/" & Val(Brr(i, 4))
   '↑令T變數是3個欄位Brr陣列值以"/"符號串接成的新字串
   Z(T) = Z(T) + Val(Brr(i, 5))
   '↑令T變數為key,item累加第5欄Brr陣列值


這是Z(T) (是寫入key值) =  Z(T) + Val(Brr(i, 5)) (是寫入item值)

Next
Brr = Range([Data!G1], [Data!A65536].End(xlUp))
'↑令Brr變數是二維陣列,以另表儲存格值帶入
For i = 2 To UBound(Brr)
'↑設順迴圈!令i從1 到Brr陣列縱向最大索引列號
   T = Trim(Brr(i, 1)) & "/" & Val(Brr(i, 2)) & "/" & Val(Brr(i, 3))
   '↑令T變數是3個欄位Brr陣列值以"/"符號串接成的新字串
   Brr(i - 1, 1) = Z(T)
   '↑令Brr陣列第1欄寫入查Z字典的item值

這一句, 為何這樣的編寫是寫入item值而不是寫入key值呢?
Next
With [Data!D2].Resize(UBound(Brr) - 1)
'↑以下是關於結果儲存格的程序
   .Value = Brr
   '↑令儲存格值以Brr陣列值寫入
   .Offset(, 1) = "=D2-SUM(F2:" & [Data!IV1].End(xlToLeft)(2).Address(0, 0) & ")"
   '↑令結餘欄寫入公式 讓自動運算
End With
End Sub

TOP

回復 5# Andy2483

Andy 學兄,
謝謝你詳細和耐心的解釋,
大後輩獲益良多, 謝謝指導

TOP

回復 14# 准提部林

謝謝准大提供有用資料, 謝謝

TOP

        靜思自在 : 不要小看自己,因為人有無限的可能。
返回列表 上一主題