返回列表 上一主題 發帖

[發問] 多條件篩選&ListBox

回復 64# c_c_lai


    改的部分可以幫我註解意思嗎,萬分感謝XD

TOP

回復 63# starbox520
妳把
Private Sub CustPkg(Ar3 As Variant)
裡的
            For ii = 1 To 8
                Ar(ii, UBound(Ar, 2)) = c.Offset(, ii).Text
            Next
改成
            For ii = 1 To 8
                Ar(ii, UBound(Ar, 2)) = c.Offset(, ii - 1).Text
            Next
執行 第二個 LISTBOX 便正常了。

TOP

回復 62# c_c_lai


    你說的講法跟我的想法是一樣的

重要的是 第一、二種的處理。這兩者是否指差別在
"AZ" 、"BA" 的資料抓取不同,其實過程都一樣呢?
如果 資料一樣是否只取第一組?
能否再細說兩這間的實際差異?
   
     過程都一樣,差在"AZ" 、"BA" 的資料抓取不同
    沒錯只取一組,因為篩出來可能第一種篩法跟第2種篩法結果會一樣
    這時"類別"算是第一種

TOP

回復 61# starbox520
第2個LISTBOX尚無時間調整,可能如妳說的可能會卡住,
別急!
重要的是先印證 第一、二種的處理。這兩者是否指差別在
"AZ" 、"BA" 的資料抓取不同,其實過程都一樣呢?
如果 資料一樣是否只取第一組?
能否再細說兩這間的實際差異?

TOP

回復 60# c_c_lai


    有跑出來了!!!
    可是我後面的程式碼是不是就會出錯了QQ
   
   
    不能貼上,第2個LISTBOX 也卡住了QQ
    不過第一個結果對了!!!!

TOP

回復 59# starbox520
妳將 AuditCustPkg(Adt_Rng As Range) 重複貼置,
AuditCustPkg(Adt_Rng As Range) 內又有一個
AuditCustPkg(Adt_Rng As Range)。
TTS0000CC.rar (816.07 KB)

TOP

回復 58# c_c_lai

     對啊我放在裡面耶><

    TTS0000CC.rar (805.86 KB)

TOP

回復 57# starbox520
三支程式皆應放入到 工作表單 "TR排機&產出" 內,
如不行妳將妳的程式上傳,我來幫妳整理。

TOP

回復 56# c_c_lai


   
     那ㄟ安捏...
  1. Sub AuditCustPkg(Adt_Rng As Range)
  2.     Dim c As Range, frstAddr As String, tf As Boolean
  3.     Dim cts As Integer, ct2 As Integer
  4.     Dim Arr As Variant, Ar2 As Variant, Ar3 As Variant
  5.    
  6.     With Sheets("Cus簡碼")
  7.         Set c = .[B:B].Find(Adt_Rng.Offset(, -1).Value, , , 1)  ' "TR排機&產出" Customer 比對 "Cus簡碼" CUST_GROUP
  8.         
  9.         If Not c Is Nothing Then
  10.             frstAddr = c.Address
  11.             Do
  12.                 If IsEmpty(Arr) Then ReDim Arr(1 To 1) Else ReDim Preserve Arr(1 To UBound(Arr) + 1)
  13.                 Arr(UBound(Arr)) = Array(c.Offset(, -1).Text, c.Text)
  14.                
  15.                 Set c = .[B:B].FindNext(c)
  16.             Loop While Not c Is Nothing And c.Address <> frstAddr
  17.         End If
  18.     End With
  19.    
  20.     If Not IsEmpty(Arr) Then
  21.         With Sheets("材料")
  22.             For cts = LBound(Arr) To UBound(Arr)
  23.                 Set c = .[M:M].Find(Arr(cts)(0), , , 1)      '  "Cus簡碼" CODE 比對 "材料" CUST_CODE
  24.                
  25.                 If Not c Is Nothing Then      '  Arr(cts)(0) = "ASM" : Variant/String
  26.                     frstAddr = c.Address
  27.                     Do
  28.                         '  以 "TR排機&產出" 的  "F"、"G"、"H" 為條件,去 "材料" 找到對應的數據。
  29.                         '  第 1 種 (相同 Cust (c.Value) & PKG (c.Offset(, 3))  & B/S (c.Offset(, 4)) & L/C (c.Offset(, 5)))
  30.                         If c.Offset(, 3) = Adt_Rng.Value And c.Offset(, 4) = Adt_Rng.Offset(, 1).Value And c.Offset(, 5) = CStr(Adt_Rng.Offset(, 2).Value) Then
  31.                             If IsEmpty(Ar2) Then ReDim Ar2(1 To 1) Else ReDim Preserve Ar2(1 To UBound(Ar2) + 1)
  32.                             Ar2(UBound(Ar2)) = Array(c.Text, Arr(cts)(1), c.Offset(, 3).Text, c.Offset(, 4).Text, c.Offset(, 5).Text, c.Offset(, 39).Text, c.Offset(, 40).Text)
  33.                         End If
  34.                         
  35.                         Set c = .[M:M].FindNext(c)
  36.                     Loop While Not c Is Nothing And c.Address <> frstAddr
  37.                 End If
  38.                
  39.                 If Not IsEmpty(Ar2) Then
  40.                     For ct2 = LBound(Ar2) To UBound(Ar2)
  41.                         '  以 工作表 "TR排機&產出" 的  "F"、"G"、"H" 為條件, 去 工作表 "材料" 找到對應的數據;
  42.                         '  然後找到這筆數據的 "CARRIER1 P/N",然後只要一樣 "CARRIER1 P/N" 的都列出來。
  43.                         Set c = .[BA:BA].Find(Ar2(ct2)(6), , , 1)   '  CARRIER1 P/N ("BA")  Ar2(ct2)(6) = "4100998111" :
  44.                         
  45.                         If Not c Is Nothing Then   ' PKG (c.Offset(, -37)) 、 BODU_SIZE (c.Offset(, -36))
  46.                             frstAddr = c.Address   ' CUST_CODE (c.Offset(, -40).Text)、, LEAD_COUNT (c.Offset(, -35).Text)
  47.                             Do
  48.                                 '  同步地排除原先在 工作表 "TR排機&產出" 點選的 Package。(Customer、Package、Bodysize)
  49.                                 '  修正以 "Cus簡碼" Arr 之第一組 (Arr(1)(0)) 作為判斷依據。
  50.                                 tf = (c.Offset(, -40).Text = Arr(1)(0) And c.Offset(, -37) = Adt_Rng.Value And c.Offset(, -36) = Adt_Rng.Offset(, 1).Value)
  51.                                 If Ar2(ct2)(1) <> "" And tf = False Then
  52.                                     If IsEmpty(Ar3) Then ReDim Ar3(1 To 1) Else ReDim Preserve Ar3(1 To UBound(Ar3) + 1)
  53.                                     Ar3(UBound(Ar3)) = Array(Ar2(ct2)(1), c.Offset(, -37).Text, c.Offset(, -36).Text, c.Offset(, -35).Text, c.Text)
  54.                                 End If

  55.                                 Set c = .[BA:BA].FindNext(c)
  56.                             Loop While Not c Is Nothing And c.Address <> frstAddr
  57.                         End If
  58.                     Next ct2
  59.                 End If
  60.             Next cts
  61.         End With
  62.         
  63.         If Not IsEmpty(Ar3) Then CustPkg (Ar3)
  64.     End If
  65.    
  66.     Set Arr = Nothing
  67.     Set Ar2 = Nothing
  68.     Set Ar3 = Nothing
  69. End Sub
複製代碼

TOP

回復 55# starbox520
妳將我目前修正的程式碼套入你的程式中,
跑一次看看結果是否如你所願?

TOP

        靜思自在 : 待人退一步,愛人寬一寸,就會活得很快樂。
返回列表 上一主題