返回列表 上一主題 發帖

請問資料比對且運算到工作表三

本帖最後由 Andy2483 於 2023-5-24 11:04 編輯

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

今日交易表 & 今日報價表:
  

結果表執行前:


執行結果:



Option Explicit
Sub TEST()
Dim Arr, Brr, Crr, Y, i&
'↑宣告變數
Set Y = CreateObject("Scripting.Dictionary")
'↑令Y變數是 字典
Brr = Range([今日報價!B2], [今日報價!A65536].End(3))
'↑令Brr變數是 二維陣列,以今日報價表 儲存格值帶入陣列裡
For i = 1 To UBound(Brr): Y(Brr(i, 1) & "/報") = Brr(i, 2): Next
'↑設順迴圈,令產品名稱 連接 "/報"當key,item是B欄的報價
Brr = Range([今天交易!B2], [今天交易!A65536].End(3))
'↑令Brr變數是 二維陣列,以今天交易表儲存格值帶入陣列裡
For i = 1 To UBound(Brr): Y(Brr(i, 1) & "/易") = Y(Brr(i, 1) & "/易") + Brr(i, 2): Next
'↑設順迴圈,令產品名稱 連接 "/易"當key,item是B欄的單量做累加
Arr = Range([交易紀錄!A1], [交易紀錄!A65536].End(3))
'↑令Arr變數是 二維陣列,以交易紀錄表 A欄儲存格值帶入陣列裡
If [交易紀錄!C1] = Date Then
'↑如果[交易紀錄!C1]儲存格值是 今天日期,代表今日已經執行過
   Crr = Range([交易紀錄!V1], [交易紀錄!C65536].End(3))
   '↑令Crr變數是 二維陣列,以交易紀錄表C~V欄儲存格值帶入陣列
   Else '否則
      Crr = Range([交易紀錄!V1], [交易紀錄!B65536].End(3))
      '↑令Crr變數是 二維陣列,以交易紀錄表B~V欄儲存格值帶入陣列
End If
For i = 2 To UBound(Crr)
'↑設順迴圈
   Crr(i, 1) = Y(Arr(i, 1) & "/報") * Y(Arr(i, 1) & "/易")
   '↑令Crr陣列的第1欄帶入查Y字典計算出來的每個產品交易金額
Next
Crr(1, 1) = Date
'↑令Crr陣列1索引號列1索引號欄陣列值是 今天日期
[交易紀錄!C1].Resize(UBound(Crr), 20) = Crr
'↑令Crr陣列值從[交易紀錄!C1]開始寫入儲存格裡
Set Y = Nothing: Erase Arr,Brr, Crr
'↑令釋放變數
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 得理要饒人,理直要氣和。
返回列表 上一主題