返回列表 上一主題 發帖

請問可否做到自動扣減資料

請問可否做到自動扣減資料

Book1.rar (8.27 KB)
請問可否做到自動扣減。
顯示SO NO還有那些文件沒有寄出、
無論下面三個欄輸入的字是否相同,只要儲存格有資料就代表相同
I欄=O欄,無論儲存格的資料是否相同,只要這兩欄同時有資料,就代表沒有OBL
J欄=P欄,無論儲存格的資料是否相同,只要這兩欄同時有資料,就代表沒有OHC
K欄=Q欄,無論儲存格的資料是否相同,只要這兩欄同時有資料,就代表沒有CO
sheet1是資料庫,ON HAND是要的效果

回復 1# 198188

Book1.rar (8.4 KB)
資料庫:
   
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

剛才的附件有問題,現重新上傳附件。

Book1.rar (8.4 KB)

TOP

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

回復 2# 198188
[ON HAND] 為何要有兩個 SO NO        SO NO        BUYER        AGENT        ETA        DOCS LIST

TOP

回復 3# GBKEE


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

你是不是問SO內的資料相同?

TOP

回復 3# GBKEE

Book1.rar (8.62 KB)


見到了,可能不小心打多了,現附上更正的附件。

TOP

回復 5# 198188
1#的說明對與附檔[ON HAND]的範例接不上啊!!請在說明看看.

TOP

回復 6# GBKEE
Book1.rar (8.68 KB)
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

TOP

  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
學海無涯_不恥下問

TOP

回復 8# Hsieh


   
.[A2].Resize(d.Count, 5) = Application.Transpose(Application.Transpose(d.items))
出現error RUN-TIME ERROR'13':  TYPE MISMATCH

TOP

回復 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
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 能善用時間的人,必能掌握自己努力的方向。
返回列表 上一主題