Board logo

標題: 請問可否做到自動扣減資料 [打印本頁]

作者: 198188    時間: 2012-12-6 00:13     標題: 請問可否做到自動扣減資料

[attach]13397[/attach]
請問可否做到自動扣減。
顯示SO NO還有那些文件沒有寄出、
無論下面三個欄輸入的字是否相同,只要儲存格有資料就代表相同
I欄=O欄,無論儲存格的資料是否相同,只要這兩欄同時有資料,就代表沒有OBL
J欄=P欄,無論儲存格的資料是否相同,只要這兩欄同時有資料,就代表沒有OHC
K欄=Q欄,無論儲存格的資料是否相同,只要這兩欄同時有資料,就代表沒有CO
sheet1是資料庫,ON HAND是要的效果
作者: 198188    時間: 2012-12-6 00:39

回復 1# 198188

[attach]13399[/attach]
資料庫:
   
1        Receive Docs        111111        A        AA        23-Oct-12        1/12/2012        DHL123        OBL*3        OHC                PM                                               
2        Send Out Docs        111111        A        AA        23-Oct-12        2/12/2012        SF123                OHC                AM
3        Receive Docs        222222        B        BB        15-Nov-12        2/12/2012        DHL124                        CO2        AM                                               
4        Receive Docs        111111        A        AA        23-Oct-12        2/12/2012        DHL125                        CO        AM                                               
5        Receive Docs        222222        B        BB        15-Nov-12        3/12/2012        DHL126        OBL                        AM                                               
6        Receive Docs        222222        B        BB        15-Nov-12        4/12/2012        DHL127                OHC                AM                                               
7        Receive Docs        333333        C        CC        25-Nov-12        6/12/2012        DHL128        OBL        OHC        CO        AM                                               
8        Send Out Docs        222222        B        BB        15-Nov-12        7/12/2012        SF124                OHC        CO        AM
9        Send Out Docs        333333        C        CC        25-Nov-12        7/12/2012        SF125                        CO        AM
10        Send Out Docs        333333        C        CC        25-Nov-12        8/12/2012        SF126                OHC                AM
11        Receive Docs        444444        D        DD        25-Dec-12        9/12/2012        DHL129        OBL        OHC        CO        AM                                               
12        Send Out Docs        333333        C        CC        25-Nov-12        9/12/2012        SF127        OBL                        AM
13        Send Out Docs        444444        D        DD        25-Dec-12        9/12/2012        SF128                OHC        CO        AM


結果:
SO NO        BUYER        AGENT        ETA                             DOCS LIST
111111        A        AA        23-Oct-12        OBL,CO
222222        B        BB        15-Nov-12        OBL
444444        D        DD        25-Dec-12        OBL

剛才的附件有問題,現重新上傳附件。
作者: GBKEE    時間: 2012-12-6 11:01

本帖最後由 GBKEE 於 2012-12-6 12:30 編輯

回復 2# 198188
[ON HAND] 為何要有兩個 SO NO        SO NO        BUYER        AGENT        ETA        DOCS LIST
作者: 198188    時間: 2012-12-6 11:21

回復 3# GBKEE


    沒有兩欄SO,我剛才打開都沒有?只有item no and SO

你是不是問SO內的資料相同?
作者: 198188    時間: 2012-12-6 12:38

回復 3# GBKEE

[attach]13407[/attach]


見到了,可能不小心打多了,現附上更正的附件。
作者: GBKEE    時間: 2012-12-6 14:29

回復 5# 198188
1#的說明對與附檔[ON HAND]的範例接不上啊!!請在說明看看.
作者: 198188    時間: 2012-12-6 15:01

回復 6# GBKEE
[attach]13412[/attach]
SO NO 111111 分別收到OBL*3, OHC, CO ; 及分別寄出OHC
所以
SO NO        BUYER        AGENT        ETA                            DOCS LIST
111111        A        AA        23-Oct-12        OBL,CO

SO NO 222222 分別收到CO*2, OBL, OHC ; 及分別寄出OHC, CO
所以
SO NO        BUYER        AGENT        ETA                            DOCS LIST
222222        B        BB        15-Nov-12        OBL

SO NO 333333 分別收到 OBL, OHC, CO ; 及分別寄出 CO, OHC, OBL
所以
SO NO        BUYER        AGENT        ETA                            DOCS LIST

SO NO 444444 分別收到 OBL, OHC, CO ; 及分別寄出 OHC, CO
所以
SO NO        BUYER        AGENT        ETA                            DOCS LIST   
444444        D        DD        25-Dec-12        OBL

I欄和O欄不管儲存格內容是什麼,只要儲存格內有資料,電腦就自動默認它是OBL
J欄和P欄不管儲存格內容是什麼,只要儲存格內有資料,電腦就自動默認它是OHC
K欄和Q欄不管儲存格內容是什麼,只要儲存格內有資料,電腦就自動默認它是CO
作者: Hsieh    時間: 2012-12-6 16:03

  1. Sub ex()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. ay = Array("OBL", "OHC", "CO")
  4. With Sheets("Sheet1")
  5. Set rng = .Range(.[C2], .Cells(.Rows.Count, 3).End(xlUp))
  6. For Each a In rng
  7.   If IsEmpty(d(a.Value)) Then
  8.   For i = 9 To 11
  9.   Set rng1 = .Cells(2, i).Resize(rng.Rows.Count, 1)
  10.   Set rng2 = .Cells(2, i + 6).Resize(rng.Rows.Count, 1)
  11.      x = Evaluate("SumProduct((" & rng.Address & "=" & a & ")*(" & rng1.Address & "<>""""))")
  12.      y = Evaluate("SumProduct((" & rng.Address & "=" & a & ")*(" & rng2.Address & "<>""""))")
  13.      If x = 0 Xor y = 0 Then mystr = IIf(mystr = "", ay(i - 9), mystr & "," & ay(i - 9))
  14.   Next
  15.   If mystr <> "" Then d(a.Value) = Array(a.Value, a.Offset(, 1).Value, a.Offset(, 2).Value, a.Offset(, 3).Value, mystr) Else d.Remove a.Value
  16.   mystr = ""
  17.   End If
  18. Next
  19. End With
  20. With Sheets("ON HAND")
  21. .UsedRange.Offset(1).ClearContents
  22. .[A2].Resize(d.Count, 5) = Application.Transpose(Application.Transpose(d.items))
  23. End With
  24. End Sub
複製代碼
回復 7# 198188
作者: 198188    時間: 2012-12-6 17:09

回復 8# Hsieh


   
.[A2].Resize(d.Count, 5) = Application.Transpose(Application.Transpose(d.items))
出現error RUN-TIME ERROR'13':  TYPE MISMATCH
作者: Hsieh    時間: 2012-12-6 17:49

回復 9# 198188

應該是你的作用中工作表並非Sheet1
那就公式內參照加上工作表
  1. Sub ex()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. ay = Array("OBL", "OHC", "CO")
  4. With Sheets("Sheet1")
  5. Set Rng = .Range(.[C2], .Cells(.Rows.Count, 3).End(xlUp))
  6. For Each a In Rng
  7.   If IsEmpty(d(a.Value)) Then
  8.   For i = 9 To 11
  9.   Set rng1 = .Cells(2, i).Resize(Rng.Rows.Count, 1)
  10.   Set rng2 = .Cells(2, i + 6).Resize(Rng.Rows.Count, 1)
  11.      x = Evaluate("SumProduct((" & Rng.Address(, , , 1) & "=" & a & ")*(" & rng1.Address(, , , 1) & "<>""""))")  '參照位址包含外部參照
  12.      y = Evaluate("SumProduct((" & Rng.Address(, , , 1) & "=" & a & ")*(" & rng2.Address(, , , 1) & "<>""""))")  '參照位址包含外部參照
  13.      If x = 0 Xor y = 0 Then mystr = IIf(mystr = "", ay(i - 9), mystr & "," & ay(i - 9))
  14.   Next
  15.   If mystr <> "" Then d(a.Value) = Array(a.Value, a.Offset(, 1).Value, a.Offset(, 2).Value, a.Offset(, 3).Value, mystr) Else d.Remove a.Value
  16.   mystr = ""
  17.   End If
  18. Next
  19. End With
  20. With Sheets("ON HAND")
  21. .UsedRange.Offset(1).ClearContents
  22. If d.Count > 0 Then .[A2].Resize(d.Count, 5) = Application.Transpose(Application.Transpose(d.items))
  23. End With
  24. End Sub
複製代碼

作者: 198188    時間: 2012-12-6 18:07

回復 10# Hsieh


   可以了,謝謝~
但是 如果SO NO沒有收件,而先寄件,也顯示出來了。不過這種情況除非人為錯誤,否則也不會未有件就可以寄件
作者: 198188    時間: 2012-12-6 22:36

回復 10# Hsieh

高人可否幫我看看下面link的程式錯在哪裡?
    http://forum.twbts.com/viewthrea ... amp;page=4#pid47882




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)