返回列表 上一主題 發帖

[發問] 多條件篩選&ListBox

回復 118# starbox520
試試看!
  1. Private Sub CommandButton2_Click()
  2.     Dim Arr As Variant, Brr As Variant, aa As Variant, i&, j&, x$, Myr&
  3.     Dim d As Object, t As Variant

  4.     Set d = CreateObject("Scripting.Dictionary")
  5.    
  6.    
  7.     '  比對 "TR排機&產出" 灰色欄位 "E" (Customer)、 "F" (Package)、 "G" (Bodysize)、 "H" (L/C) 比對
  8.     '  "量大未排機" 找到一樣的, 秀上 "TR排機&產出" 的 "B" 欄 (機台編號) 同一列的 "機台編號"。
  9.     With Sheets("TR排機&產出")
  10.         Arr = .[A1].CurrentRegion.Value
  11.    
  12.         For i = 4 To (UBound(Arr) - 3) Step 5
  13.             If Not IsError(Arr(i, 5)) Then   '& "|" & Arr(i, 6) & "|" & Arr(i, 7) & "|" & Arr(i, 8)
  14.                  x = Arr(i, 5) & "|" & Arr(i, 6) & "|" & Arr(i, 7) & "|" & Arr(i, 8)
  15.                  d(x) = IIf(IsEmpty(d(x)), CStr(i), d(x) & "," & CStr(i))
  16.             End If
  17.         Next
  18.     End With

  19.     With Sheets("量大未排機")
  20.         Brr = .[A1].CurrentRegion
  21.         
  22.         For i = 2 To UBound(Brr)
  23.             x = Brr(i, 1) & "|" & Brr(i, 2) & "|" & Brr(i, 3) & "|" & Brr(i, 4)
  24.             
  25.             If d.exists(x) Then
  26.                 t = d(x)
  27.                
  28.                 If InStr(t, ",") Then
  29.                     aa = Split(t, ",")
  30.                     
  31.                     For j = 0 To UBound(aa)
  32.                         .Cells(i, 9 + j) = Arr(aa(j), 2)
  33.                     Next
  34.                 Else
  35.                     .Cells(i, 9) = Arr(t, 2)
  36.                 End If
  37.             End If
  38.         Next
  39.         
  40.         '  主要想設置 "H" (數量) 欄 數量由大至小,這邊以錄製巨集使用
  41.         .AutoFilter.Sort.SortFields.Clear
  42.         .AutoFilter.Sort.SortFields.Add Key:=Range( _
  43.                 "H1:H500"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
  44.                 xlSortNormal
  45.         
  46.         With .AutoFilter.Sort
  47.             .Header = xlYes
  48.             .MatchCase = False
  49.             .Orientation = xlTopToBottom
  50.             .SortMethod = xlPinYin
  51.             .Apply
  52.         End With
  53.     End With
  54. End Sub
複製代碼

TOP

回復 122# starbox520

TOP

回復 126# starbox520
盡量 RUN 吧!
會出錯才怪!

TOP

本帖最後由 c_c_lai 於 2016-12-24 20:58 編輯

回復 126# starbox520
在每次按鈕後,順手清除上一次的紀錄,
增加一行 "清除舊有資料" 語法,
以免內容會留下舊有內容產生困擾。
  1.     With Sheets("量大未排機")
  2.         Brr = .[A1].CurrentRegion
  3.         
  4.         .Range("I2:L" & UBound(Brr)) = ""
  5.         For i = 2 To UBound(Brr)
  6.             x = Brr(i, 1) & "|" & Brr(i, 2) & "|" & Brr(i, 3) & "|" & Brr(i, 4)
複製代碼
或是
  1.     With Sheets("量大未排機")
  2.         Brr = .[A1].CurrentRegion
  3.         
  4.         '  .Range("I2:L" & UBound(Brr)) = ""
  5.         .Range("I2:L" & UBound(Brr)).ClearContents
  6.         For i = 2 To UBound(Brr)
複製代碼
接下來, 還有未回答的問題嗎?

TOP

本帖最後由 c_c_lai 於 2016-12-25 05:37 編輯

回復 129# starbox520
這串好像是聖經,仔細研究後有疑問再問妳,
今天一整天在 Y17 有方圓舉辦的土風舞聯歡,
我老人家要出門去透透氣了!

TOP

回復 129# starbox520
妳在前置作業有先處理WIP的資料,即在寫入 Sheet1 之前先將:

1. S欄篩出 LS1T| LS1N| TR| BK| VQ 字串,其餘的不要;
2. 將 J 欄的 "G"、 R欄的 "R" 篩出來,其餘的不要;
3. "N" 欄的時間,以當前系統時間 + 4HRS 內 篩出來,空白無時間資料的
   篩出 來,其餘的不要 (其餘的指不在這 4HRS 以內的資料);
4. "U" 欄急貨單號,有任何值,在 "I" 欄 Schedule加上 * 號
   之後再寫到 Sheet1。

A. 請問妳是用人工作業處理嗎? (即從 WIP 寫入到  Sheet1)
B. 試問 WIP 的資料是從何而來?(即如何產生出來的?)

TOP

回復 129# starbox520
試試看 WIP!
tx00001223.rar (770.58 KB)

TOP

回復 2# starbox520
試試看!
tx00001223U.rar (779.44 KB)
整體全部試完後告訴我結果。

TOP

本帖最後由 c_c_lai 於 2016-12-26 18:54 編輯

回復 1# starbox520
整隻程式包含 "lstSelector_設定()" 、
ArrangeMent()、WIP() 在內都有修正過。

TOP

回復 6# starbox520
這邊我不懂意思
我不是把星號改掉了   ->   我改成XXXXX
但是秀出來一樣有星號耶~

是真的看不懂意思,XXXXX 何意?

TOP

        靜思自在 : 成功是優點的發揮,失敗是缺點的累積。
返回列表 上一主題