返回列表 上一主題 發帖

[發問] 多條件篩選&ListBox

回復 27# c_c_lai


WIP的"O"欄   裡面也會有SQH011 . SQH021...............SQ10A1
如果跟我一樣寫死在裡面的話, 會有這些
SQH011.SQH021.SQH031.SQH041.SQH051.SQH061.SQH071.SQH081.SQH091.SQH101.SQH111.SQH121.SQH131.SQH141.SQH151.SQH161.SQH171.SQH181.SQH191.SQH201.SQH211.SQH221.SQH231.SQH241.SQH0A1.SQ6011.SQ6021.SQ6031.SQ6041.SQ6051.SQ6061.SQN011.SQN021.RQT031.RQT051.SQ8281.SQ8291.SQ8301.SQ8311.SQ8321.SQ8331.SQ8341.SQ8351.SQ8381.SQ8411.SQ8421.SQ8431.SQ8471.SQ8481.SQ8491.SQ8501.SQ8541.SQ8551.SQ8571.SQ10A1

這些數字就是從"TR排機&產出"的B欄取出來的
然後篩到Sheet1的時候要把這些都去除掉
篩的欄位就是"WIP"的O欄

TOP

回復 28# starbox520
妳的意思就是將"WIP"的O欄值順手清空?
因為妳的篩來篩去,我都迷糊了。

TOP

回復 29# c_c_lai


    對阿
可是不是清空喔
是我列出的那些字串篩掉就好  其他的還是要留著喔~

TOP

回復 30# starbox520
我書念得少,還是搞不懂什麼意思。
要如何刪除?

TOP

回復 31# c_c_lai

錄製巨集的話長這樣~
只是反向思考
錄製巨集是保留要的資訊

但這邊我的想法是篩掉我不要的
就前幾篇說的那樣
然後那些不要的就是從"TR排機&產出"的B欄取出來的
  1. Sub 巨集1()
  2. '
  3. ' 巨集1 巨集
  4. '

  5. '
  6.     ActiveWindow.SmallScroll ToRight:=5
  7.     ActiveSheet.Range("$A$1:$AA$1984").AutoFilter Field:=15, Criteria1:=Array( _
  8.         "5F", "BK10A2", "BK2151", "BK2161", "BK2162", "BK2172", "BK2181", "BK2182", "BK2191", _
  9.         "BK2192", "BK2201", "BK2202", "BK2211", "BK2212", "BK2232", "BK3041", "BK3071", _
  10.         "BK3101", "BK3111", "BK3121", "BK3131", "BK3141", "BK3151", "BK3171", "BK3181", _
  11.         "BK3191", "BK3201", "BK3211", "BK3231", "BK3251", "BK3261", "BK3271", "BKQ011", _
  12.         "BKQ012", "BKQ022", "BKQ023", "BKQ031", "BKQ042", "BKQ052", "BKQ053", "BKQ061", _
  13.         "BKQ062", "BKQ064", "BKQ071", "BKQ072", "BKQ101", "BKQ102", "BKQ121", "BKQ122", _
  14.         "KQ2051", "KQ7031", "MVM031", "MVM071", "PPK011", "="), Operator:=xlFilterValues
  15. End Sub
複製代碼

TOP

回復 32# starbox520
謝謝你的詳細地說明;但我依然抓不到妳指的 Key Point。
我要的是:
我打算從 "哪裡" 到 "那裏" 將 "花種" 栽植,等長大 "開花" 後拿來賣到 "花市" 去。
而不是:
我今天打算清晨 5:00 鐘從 "哪裡" 用走的走到 "那裏" 將一些朋友那兒要來的栽培種植的 "花種"
將它們予以栽植,等它們長大 "開花" 後,再將它們採下,拿來賣到 "花市" 去。

結果是 "不知道答案",能否白話點,扼要地表述。
譬如:
在執行 "WIP" 時, 與 "TR排機&產出" 有何關聯性?
不要籠統地說一堆,請一筆記錄對一筆記錄是如何處理?
"WIP" 寫到 "Sheet1" 又有何額外注意事項?

TOP

回復 33# c_c_lai


    就是我在這裡的程式碼
  1. Sub WIP()

  2.     Dim r%, i%, Arr As Variant

  3.     Dim rng As Range, reg As New RegExp

  4.    

  5.     With reg                                 '  reg :  : RegExp/IRegExp2

  6.         .IgnoreCase = True                   '  IgnoreCase = True : Boolean

  7.         '  S 欄 (Recipe) 篩 出 LS1T | LS1N | TR | BK | VQ 字串,其餘的不要

  8.         .Pattern = "LS1T|LS1N|TR|BK|VQ"      '  Pattern = "LS1T|LS1N|TR|BK|VQ" : String

  9.     End With

  10.    

  11.     With Worksheets("WIP")

  12.         Set rng = .Rows(1)

  13.         Arr = .[A1].CurrentRegion.Value   '  Arr :  : Variant/Variant(1 to 1249, 1 to 27)

  14.         

  15.         For i = 2 To UBound(Arr)      '  UBound(Arr) = 1249 : Long

  16.            

  17.             '  (reg.test(Arr(i, 19)) : Arr(i, 19) = "TR1T0.03" (True) / = "PK1T0" (False)) : Boolean

  18.             If Arr(i, 10) = "G" And Arr(i, 18) = "R" And reg.test(Arr(i, 19)) Then

  19.                 '  N 欄 (Trackin time) 的時間,以當前系統時間 + 4HRS

  20.                 If IsDate(Arr(i, 16)) Then

  21.                     If Arr(i, 16) >= Now And Arr(i, 16) < DateAdd("h", 4, Now) Then    ' 當下時間 +4Hrs

  22.                         If Len(Arr(i, 21)) > 0 And Right(.Cells(i, 9), 1) <> "急貨" Then

  23.                             .Cells(i, 9) = .Cells(i, 9) & "急貨"       '  確認是否為急貨單號

  24.                         End If

  25.                         

  26.                         Set rng = Union(rng, .Rows(i))

  27.                     End If

  28.                     '  N 欄內空白無資料

  29.                 ElseIf Len(Arr(i, 16)) = 0 Then

  30.                     '  如 "U" 欄 (急貨單號),有任何值,在 "I" 欄 (Schedule) 加上 * 號

  31.                     If Len(Arr(i, 21)) > 0 And Right(.Cells(i, 9), 2) <> "急貨" Then

  32.                                   .Cells(i, 9) = .Cells(i, 9) & "急貨"       '  確認是否為急貨單號

  33.                      End If

  34.                       '  Cells(i, 9) = .Cells(i, 9) & "急貨"

  35.                     '  .Cells(i, 9) = Left(.Cells(i, 9), Len(.Cells(i, 9)) - 1) & "急貨"       '  確認是否為急貨單號

  36.                   '  End If

  37.                     

  38.                     Set rng = Union(rng, .Rows(i))

  39.                 End If

  40.             End If

  41.         Next

  42.     End With

  43.    

  44.     With Worksheets("Sheet1")

  45.         .[A1].CurrentRegion.ClearContents      '  清除上一次的畫面

  46.         rng.Copy .Range("A1")

  47.     End With

  48. End Sub
複製代碼
現在的步驟是
     篩選J欄塞選只有G的資料
     R欄塞選只有R的資料
     S欄塞選有LS1T。 LS1N。 TR。 BK。 VQ的字串
     N欄有時間資料的以現在時間+ 4小時以外都去除掉(EX現在12點,12-16的資料留下,因WIP頁面每天會更新),空白資料留下
     若U欄有字在I欄顯內容後面+上*號
   
要多加一項篩選
現在想加一個就是,前幾篇說明的
變成我篩完
J欄塞選只有G的資料
R欄塞選只有R的資料後
在來篩選我要新增的條件
在篩S欄塞選有LS1T。 LS1N。 TR。 BK。 VQ的字串
.......(後面不變)

要新增的條件為:
WIP的"O"欄內容會有TR排機&產出的"B"欄  資訊
現在要做的就是先去找到TR排機&產出的"B"欄  資訊,資訊意指(SQH011 . SQH021...............SQ10A1) 這些字串  
在來把抓到的資訊拿去比對WIP的"O"欄
找到相同的字串那一整列都去除掉,換句話說就是要保留除了這些字串以外的部分

TOP

回復 34# starbox520
"WIP" 的 "MA code" 幾乎全為白,要篩甚麼?

TOP

回復 34# starbox520
妳的想法是這樣嗎?
  1. Sub WIP()
  2.     Dim r%, i%, Arr As Variant, c As Variant
  3.     Dim rng As Range, reg As New RegExp
  4.    
  5.     With reg                                 '  reg :  : RegExp/IRegExp2
  6.         .IgnoreCase = True                   '  IgnoreCase = True : Boolean
  7.         '  S 欄 (Recipe) 篩 出 LS1T | LS1N | TR | BK | VQ 字串,其餘的不要
  8.         .Pattern = "LS1T|LS1N|TR|BK|VQ"      '  Pattern = "LS1T|LS1N|TR|BK|VQ" : String
  9.     End With
  10.    
  11.     With Worksheets("WIP")
  12.         Set rng = .Rows(1)
  13.         Arr = .[A1].CurrentRegion.Value   '  Arr :  : Variant/Variant(1 to 1249, 1 to 27)
  14.         
  15.         For i = 2 To UBound(Arr)      '  UBound(Arr) = 1249 : Long
  16.             If IsEmpty(Arr(i, 15)) Then
  17.                 Set c = Nothing
  18.             Else
  19.                 Set c = Sheets("TR排機&產出").[B:B].Find(Arr(i, 15), , , 1)
  20.             End If

  21.             '  將 J 欄 (Bin Code) 的 "G"、 R 欄 (Close Type) 的 "R" 篩出來,其餘的不要
  22.             '  將 S 欄 (Recipe) 篩出 LS1T | LS1N | TR | BK | VQ 字串,其餘的不要
  23.             '  (reg.test(Arr(i, 19)) : Arr(i, 19) = "TR1T0.03" (True) / = "PK1T0" (False)) : Boolean
  24.             If Arr(i, 10) = "G" And Arr(i, 18) = "R" And reg.test(Arr(i, 19)) And c Is Nothing Then
複製代碼

TOP

回復 35# c_c_lai


    空白的要留著
   我的這一欄裡面還是有很多資料的捏
    WIP裡面有1900多筆資料

TOP

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