返回列表 上一主題 發帖

[發問] 依指定區間日期、帳號 填入資料

回復 3# 准提部林
回復 2# 軒云熊

感謝兩位大大,
二個程式測試結果都相同:
同一日期、同帳號有多筆取板資料時,帶出的結果有誤
取板編號只會帶出最後一筆,數量會變成累加

以下圖片為跑程式結果 v.s. 正確資料

TOP

Sub 預約更新()
Dim Arr, xD, i&, T$
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([說明!R1], [說明!i65536].End(xlUp))
For i = 3 To UBound(Arr)
    If Arr(i, 1) = "" Or IsDate(Arr(i, 4)) Then
       T = Arr(i, 1) & "|" & Arr(i, 4)
       xD(T) = xD(T) + Val(Arr(i, 7)) '同日同號不只一筆,累加
       xD(T & "/m") = "#0000" & Arr(i, 5) '取板編號
    End If
Next i
Arr = Range([預約!G1], [預約!A65536].End(xlUp))
For i = 2 To UBound(Arr)
    T = Arr(i, 2) & "|" & Arr(i, 1)
    If xD.Exists(T) Then
       Arr(i, 3) = xD(T)
       Arr(i, 7) = xD(T & "/m")
    End If
Next i
[預約!A1].Resize(UBound(Arr), 7) = Arr
End Sub


'==========================

TOP

回復 1# PJChen
有空幫我試試看是不是這樣比對 感謝 ^^"
  1. Public Sub 跨工作表比對練習()

  2.     Arr = [說明!I2].CurrentRegion
  3.     Brr = [預約!A1].CurrentRegion
  4.    
  5.     For X = 2 To UBound(Arr)
  6.         A = Arr(X, 1) & "-" & Arr(X, 4)
  7.         For Y = 2 To UBound(Brr)
  8.             B = Brr(Y, 2) & "-" & Brr(Y, 1)
  9.             If A = B And Arr(X, 4) <> "" Then
  10.                 Brr(Y, 3) = Arr(X, 7)
  11.                 Brr(Y, 7) = "#0000" & Arr(X, 5)
  12.             End If
  13.         Next Y
  14.     Next X
  15.    
  16.     [預約!A1].Resize(UBound(Brr, 1), UBound(Brr, 2)) = Brr

  17. End Sub
複製代碼

TOP

        靜思自在 : 一個缺口的杯子,如果換一個角度看它,它仍然是圓的。
返回列表 上一主題