返回列表 上一主題 發帖

匯整資料

本帖最後由 Andy2483 於 2023-6-6 16:20 編輯

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

資料表:


結果表執行前:


執行結果:



Option Explicit
Sub TEST()
Dim Brr, Crr, Y, T$, T1$, V&, i&, Sh1 As Worksheet, Sh2 As Worksheet
'↑宣告變數
Set Sh1 = Sheets("N90122購貨明細貼上"): Set Sh2 = Sheets("菸架")
'↑令變數裝入物件(工作表)
Set Y = CreateObject("Scripting.Dictionary")
'↑Y變數是 字典
Brr = Range(Sh1.[J1], Sh1.Cells(Rows.Count, 1).End(3))
'↑令Brr變數是 二維陣列,以A~J儲存格值帶入陣列中
For i = 2 To UBound(Brr)
'↑設順迴圈
   T1 = Brr(i, 1): T = Brr(i, 3): V = Brr(i, 6)
   '↑令T1變數是 第1欄陣列值(字串),令T變數是 第3欄陣列值(字串),
   '令V變數是 第6欄陣列值(數值)

   If InStr(T1, "1") = 1 Then Y(T) = Y(T) + V / 10
   '↑如果T1變數第1個字是 1?
   '是就令在Y字典裡的T變數key其item累加(V變數除10)的數值

Next i
Brr = Range(Sh2.[B2], Sh2.Cells(Rows.Count, 1).End(3))
'↑令Brr變數是 二維陣列,換以A~B儲存格值帶入陣列中
ReDim Crr(1 To UBound(Brr), 1 To 1)
'↑令Crr變數是 二維空陣列,縱向範圍同Brr陣列,橫向1~1
For i = 1 To UBound(Brr)
'↑設順迴圈
    Crr(i, 1) = Val(Y(Brr(i, 1) & Brr(i, 2)))
    '↑令Crr陣列值是 第1欄Brr陣列值連接第2欄Brr陣列組成的新字串,查
    '查Y字典得到的item值再轉化為數值的值(補0)

Next i
Sh2.[E2].Resize(UBound(Crr)) = Crr
'↑令結果表從[E2]開始範圍儲存格以Crr陣列值寫入
Set Y = Nothing: Erase Brr, Crr
'↑令釋放變數
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 【時間無法遮擋】怕時間消逝,花了許多心血,想盡各式方法要遮擋時間,結果是:浪費了更多時間,且一無所成!
返回列表 上一主題