返回列表 上一主題 發帖

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

回復 1# enhrulee
試試看
  1. Sub Ex()
  2.     Dim D As Object, DX As Object, Rng As Range
  3.     Set D = CreateObject("SCRIPTING.DICTIONARY")   '今日報價 物件
  4.     Set DX = CreateObject("SCRIPTING.DICTIONARY")  '今日報價*今日單量 物件
  5.     Set Rng = Sheets("今日報價").Range("A2")
  6.     Do While Rng <> ""                             '取得 產品今日報價物件的 迴圈
  7.         D(Rng.Value) = Rng.Offset(, 1).Value
  8.         Set Rng = Rng.Offset(1)                    '設定為往下一列
  9.     Loop
  10.     Set Rng = Sheets("今天交易").Range("A2")
  11.     Do While Rng <> ""                          '取得 今日產品報價  * 今天單量 =金額 的迴圈
  12.         If DX.EXISTS(Rng.Value) Then            '今日產品單量已出現
  13.             DX(Rng.Value) = DX(Rng.Value) + D(Rng.Value) * Rng.Offset(, 1).Value
  14.         Else
  15.             DX(Rng.Value) = D(Rng.Value) * Rng.Offset(, 1).Value
  16.         End If
  17.        'DX.EXSITS(Rng.Value)        今天交易的產品名稱存在
  18.        'D(Rng.Value)                產品 今日報價
  19.        'Rng.Offset(, 1).Value       產品 今日單量
  20.        'DX(Rng.Value)               今天單量*今日報價
  21.         Set Rng = Rng.Offset(1)
  22.     Loop
  23.     With Sheets("交易紀錄")
  24.         If .Range("C1") <> Date Then    '不是當日
  25.             .Columns("C:C").Insert
  26.             .Columns("V:V") = ""
  27.             .Range("C1") = Date
  28.         End If
  29.         Set Rng = .Range("A2")
  30.         Do While Rng <> ""      '取得 今天有交易紀錄 產品  的迴圈
  31.             If DX.EXISTS(Rng.Value) Then Rng.Offset(, 2) = DX(Rng.Value)
  32.             '產品今日有交易  C欄輸入總金額
  33.             Rng.Offset(, 1) = "=SUM(" & Rng.Offset(, 2).Resize(1, 20).Address & ")" '
  34.             'B欄輸入公式
  35.             Set Rng = Rng.Offset(1)
  36.         Loop
  37.     End With
  38. End Sub
複製代碼

TOP

回復 3# enhrulee
程式會刪除掉原第二天(U欄)的資料
.Columns("V:V") = ""     
是刪除掉V欄,你跟我一樣粗心.

TOP

        靜思自在 : 忘功不忘過,忘怨不忘恩。
返回列表 上一主題