返回列表 上一主題 發帖

[發問] 多條件篩選&ListBox

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

TOP

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

TOP

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

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

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

本帖最後由 c_c_lai 於 2016-12-29 16:17 編輯

回復 38# starbox520
  1.         For i = 2 To UBound(Arr)      '  UBound(Arr) = 1249 : Long
  2.             '  執行 "WIP" 時,先行過濾 "TR排機&產出", 檢核該 "機台" 是否已被使用,
  3.             '  如果已被使用則予以排除在外,不再重複選用。
  4.             If IsEmpty(Arr(i, 15)) Then
  5.                 Set c = Nothing
  6.             Else
  7.                 Set c = Sheets("TR排機&產出").[B:B].Find(Arr(i, 15), , , 1)
  8.             End If
複製代碼
tx00001223U.rar (766.86 KB)

妳那砍掉 (白話文),指的是?

TOP

本帖最後由 c_c_lai 於 2016-12-30 16:24 編輯

回復 41# starbox520
妳一下要加 "*", 一下又要加 "急貨",到底哪一個是好?
  1.                 If IsDate(Arr(i, 14)) Then
  2.                     If Arr(i, 14) >= Now And Arr(i, 14) < DateAdd("h", 4, Now) Then    ' 當下時間 +4Hrs
  3.                         '  "U" 欄 (急貨單號),有任何值,在 "I" 欄 (Schedule) 加上 * 號, 之後再寫到 Sheet1
  4.                         '  If Len(Arr(i, 21)) > 0 And Right(.Cells(i, 9), 2) <> "急貨" Then
  5.                         If Len(Arr(i, 21)) > 0 And Right(.Cells(i, 9), 1) <> "*" Then
  6.                             '  .Cells(i, 9) = .Cells(i, 9) & "急貨"       '  確認是否為急貨單號
  7.                             .Cells(i, 9) = .Cells(i, 9) & "*"             '  確認是否為急貨單號
  8.                         End If
  9.                         
  10.                         Set rng = Union(rng, .Rows(i))
  11.                     End If
  12.                     '  N 欄內空白無資料的篩出來寫在此
  13.                 ElseIf Len(Arr(i, 14)) = 0 Then
  14.                     '  如果 "U" 欄 (急貨單號),有任何值,在 "I" 欄 (Schedule) 加上 * 號
  15.                     '  If Len(Arr(i, 21)) > 0 And Right(.Cells(i, 9), 2) <> "急貨" Then
  16.                     If Len(Arr(i, 21)) > 0 And Right(.Cells(i, 9), 1) <> "*" Then
  17.                         '  .Cells(i, 9) = .Cells(i, 9) & "急貨"       '  確認是否為急貨單號
  18.                         .Cells(i, 9) = .Cells(i, 9) & "*"       '  確認是否為急貨單號
  19.                     End If
  20.                     
  21.                     Set rng = Union(rng, .Rows(i))
  22.                 End If
複製代碼

TOP

回復 43# starbox520
4."U"欄急貨單號,有任何值,在"I"欄Schedule加上*號, 之後再寫到Sheet1 ???

TOP

回復 45# starbox520
被妳打敗了!

那再改回來:
  1.                 If IsDate(Arr(i, 14)) Then
  2.                     If Arr(i, 14) >= Now And Arr(i, 14) < DateAdd("h", 4, Now) Then    ' 當下時間 +4Hrs
  3.                         '  "U" 欄 (急貨單號),有任何值,在 "I" 欄 (Schedule) 加上 * 號, 之後再寫到 Sheet1
  4.                         '  4. "U" 欄 (急貨單號),有任何值,在 "I" 欄 (Schedule) 加上 "急貨", 之後再寫到 Sheet1
  5.                         If Len(Arr(i, 21)) > 0 And Right(.Cells(i, 9), 2) <> "急貨" Then
  6.                         '  If Len(Arr(i, 21)) > 0 And Right(.Cells(i, 9), 1) <> "*" Then
  7.                             .Cells(i, 9) = .Cells(i, 9) & "急貨"       '  確認是否為急貨單號
  8.                             '  .Cells(i, 9) = .Cells(i, 9) & "*"             '  確認是否為急貨單號
  9.                         End If
  10.                         
  11.                         Set rng = Union(rng, .Rows(i))
  12.                     End If
  13.                     '  N 欄內空白無資料的篩出來寫在此
  14.                 ElseIf Len(Arr(i, 14)) = 0 Then
  15.                     '  如果 "U" 欄 (急貨單號),有任何值,在 "I" 欄 (Schedule) 加上 * 號
  16.                     '  4. "U" 欄 (急貨單號),有任何值,在 "I" 欄 (Schedule) 加上 "急貨", 之後再寫到 Sheet1
  17.                     If Len(Arr(i, 21)) > 0 And Right(.Cells(i, 9), 2) <> "急貨" Then
  18.                     '  If Len(Arr(i, 21)) > 0 And Right(.Cells(i, 9), 1) <> "*" Then
  19.                         .Cells(i, 9) = .Cells(i, 9) & "急貨"       '  確認是否為急貨單號
  20.                         '  .Cells(i, 9) = .Cells(i, 9) & "*"       '  確認是否為急貨單號
  21.                     End If
  22.                     
  23.                     Set rng = Union(rng, .Rows(i))
  24.                 End If
複製代碼

TOP

回復 45# starbox520
無誤吧? 請仔細檢查一遍!

tx00001223U.rar (765.32 KB)

TOP

        靜思自在 : 犯錯出懺悔心,才能清淨無煩惱。
返回列表 上一主題