返回列表 上一主題 發帖

求教:核對,合并,加總,更新,加插資料

求教:核對,合并,加總,更新,加插資料

請各大大幫忙
Window & Door 是資料庫
Window  & Door表是記錄 各訂單號WO-J057-0**訂購每款圖號的數量

PJ 是匯總表
是將Window & Door 合并成一個資料庫。

如果Window  & Door 資料庫裏圖號,長,寬一致的相同WO-J057-*** 數量加總 (如紅色字 FS101, FS512,  FS102, DF100)
如果WO-J057-0** 全部都是“0” 則該圖號/長/寬/面積/類型/WO-J057-*** 的數量數據不抄入PJ匯總表内。 (如 FS511, DF115, DF116, DF117, DF118) 因爲沒有訂貨,所以不用顯示到PJ匯總表内。)
WO-J057-0**訂單號則以欄位排列。
如果Window 類型一欄是“口字形”, PJ 的類型一欄變成“ Mouth"  ;   
如果Window 類型一欄不是“口字形”, PJ 的類型一欄變成“ Other"  ;
如果Door 表的資料,  PJ 的類型一欄變成“ Door"  

****因爲有機會修改 Window & Door 資料或者增加WO-J057-0**訂單,所以PJ表如果不是空白,則保留原本的圖號/長/寬/面積/類型的資料,只是更新每個WO-J057-0** 的數量,或者加插PJ表内沒有的WO-J057-0**一欄到欄E後面

ac test.rar (27.48 KB)

ac test.rar (27.48 KB)

sample.rar (18.5 KB)

回復 1# 198188


   沒留意上載了3個附件,附件Sample才是正確,其他兩個附件是錯了。

TOP

  1. Option Explicit
  2. Sub Test()
  3. Dim Brr, Z, i&, C, T$, T1$, T2$, T3$, T4$, T5$, T6$, xZ As Range
  4. Dim ColNum As Long
  5. Dim m, j, k As Integer
  6. Dim L As String

  7. Set Z = CreateObject("Scripting.Dictionary")

  8. Brr = Range([Window!AE02], [WINDOW!A65536].End(3))
  9. For i = 1 To UBound(Brr)
  10.    T1 = Trim(Brr(i, 2)): T2 = Val(Brr(i, 4)): T3 = Val(Brr(i, 5)):: T = T1 & "/" & T2 & "/" & T3
  11.    If T1 = "" Then GoTo i01
  12.    Z(T) = Val(Brr(i, 6))
  13. i01:    Next
  14. Brr = [PJ!a1].CurrentRegion
  15. For i = 2 To UBound(Brr)
  16.    T1 = Trim(Brr(i, 1)): T2 = Val(Brr(i, 2)): T3 = Val(Brr(i, 3)): T = T1 & "/" & T2 & "/" & T3
  17.    If T1 = "" Or Z(T) = "" Then Brr(i - 1, 1) = "": GoTo i02
  18.    Brr(i - 1, 1) = Z(T)
  19. i02: Next
  20. [PJ!D2].Resize(UBound(Brr), 1) = Brr

  21. End Sub
複製代碼
回復 2# 198188

Z(T) = Val(Brr(i, 6)) 是記錄Window 欄 F是數據,
如果想記錄多個欄位的數據,例如欄G, I, J, K - AD ,應該如果寫?
另外我試過記錄欄G數據,但是中文好像讀不出來。
如果Window 内 欄B, D, E 相同的數據, 欄  I - AD 的數量按欄位分別加總,如何表達?

TOP

回復 3# 198188
看了一下你的檔案,感覺在 window & door 兩個sheet 都會同時向下向右增加行數,
小弟資歷淺,個人感覺這樣應該寫不太出來(要繞很多步,找到資料後,要先比對是不是小計總計列等......),其中影嚮比較大的,是其中的小計 & 總計欄,建議把這拿掉,
另建sheet,以excel 公式統計(公式如圖,使用 sumif),簡少 window & door 中的變數,才比較容易寫。
如果這樣你可以接受的話,程式就只要寫成   1. 尋 window 最右邊 & 最下面有資料的行數,   2.找其中有資料的cell    3.比對 pj 是否有資料 (是否需覆寫或增加)      4.重複 1~3 步驟但改成 door     5. PJ 資料排序
這樣相對而言,應該容易許多

TOP

回復 4# xyz66217


    是的,會不斷向下和向右延申。
延申問題不大,就是不知道怎樣把相同的加總 和多欄位記錄。
類似這樣加總
  Z(T) = Val(Brr(i, 6)) + Val(Brr(i, 6)) + Val(Brr(i, 6))
還有就是怎樣多欄位記錄
ARRAY (Z(T), Z(T), Z(T), Z(T), Z(T))

TOP

回復 3# 198188


    建議:以字典記錄 Window表資料的 關鍵字組為key,列號為item
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 6# Andy2483

現在在學習中,但是概念還是很模糊,請問前輩下面這兩句是怎樣解讀,我試過用逐步偵錯來了解使用方式,但是還是不懂。
[Backup!a1].Item(2, c).Resize(UBound(Brr) - 2) = Brr
[PJ!D2].Resize(UBound(Brr), 1) = Brr

TOP

        靜思自在 : 人生不一定球球是好球,但是有歷練的強打者,隨時都可以揮棒。
返回列表 上一主題