返回列表 上一主題 發帖

[發問] 求助

回復 10# yanto913
條件說的不清楚,抱歉
一.成品如a,b項,在第九碼各為L,R(其餘均為相同)視為相同,只需選a項,其餘符合第二項均選
三.零件如f,g項在為12碼各為L,R(其餘均為相同)視為相同,只需選f項目,其餘符合第四項均選

TOP

改成不等於"R"

20130118.rar (85.68 KB)

YOYO

TOP

本帖最後由 stillfish00 於 2013-1-18 23:06 編輯

回復 11# aa7551
這樣判斷你看結果符不符合
  1. Sub test()
  2. Dim ar, s, ss, d1, d2
  3. Set d1 = CreateObject("scripting.dictionary")
  4. Set d2 = CreateObject("scripting.dictionary")

  5. With Sheets(1)
  6.     ar = .Range(.[a2], .[a2].End(xlDown)).Value
  7.     For Each s In ar
  8.         '成品
  9.         If s Like "???-????L*" Then
  10.             d1.Item(s) = ""
  11.             ss = Left(s, 8) & "R" & Mid(s, 10)
  12.             If d1.exists(ss) Then d1.Remove (ss)
  13.         End If
  14.         If s Like "???-????R*" Then '非成對保留
  15.             If Not d1.exists(Left(s, 8) & "L" & Mid(s, 10)) Then d1.Item(s) = ""
  16.         End If
  17.         
  18.         '零件
  19.         If s Like "??????-????L*" Then
  20.             d2.Item(s) = ""
  21.             ss = Left(s, 11) & "R" & Mid(s, 13)
  22.             If d2.exists(ss) Then d2.Remove (ss)
  23.         End If
  24.         If s Like "??????-????R*" Then '非成對保留
  25.             If Not d2.exists(Left(s, 11) & "L" & Mid(s, 13)) Then d2.Item(s) = ""
  26.         End If
  27.     Next
  28.     .[k2].Resize(d1.Count) = Application.Transpose(d1.keys)
  29.     .[n2].Resize(d2.Count) = Application.Transpose(d2.keys)
  30. End With
  31. Set d1 = Nothing: Set d2 = Nothing
  32. End Sub
複製代碼

TOP

回復 13# stillfish00
115-1926L-A
132-1905L-LD-U
211-1946L-A
211-1946L-A-S        這些不符合條件,成品的第五,六碼要等於11,17,20,25,37

TOP

回復 9# aa7551

規則如果能確定,用進階篩選也是不錯的方法

    進階篩選.rar (131.14 KB)
學海無涯_不恥下問

TOP

回復 12# yanto913
謝謝大大的指教,我先說明自己的手動作法,先把LR配對放在一起,確認有配對,再檢查是否符合成品11,20或零件11,17,20,25,37,如有符合,則刪去R

TOP

回復 15# Hsieh
謝謝大大指教,提供一個新方式

TOP

筆者作業模式是逐筆刪除:
一.成品第五,六碼是否符合11,17,20,25,37,如不符合即刪除,再將第九碼是L,R配對(其餘碼是相同者,如112-1104L-LD,112-1104R-LD)放在一起,配對成功,刪去R(112-1104R-LD),如無配對,則保留
二.零件第八,九碼是否符合11,20,如不符合即刪除,再將第十二碼是L,R配對(其餘碼是相同者,如00#440-1126LEND,00#440-1126REND)放在一起,配對成功,刪去R(00#440-1126REND),如無配對,則保留

TOP

回復 18# aa7551
  1. Sub test()
  2. Dim ar, s5s6, s8s9, s, d1, d2
  3. Set d1 = CreateObject("scripting.dictionary")
  4. Set d2 = CreateObject("scripting.dictionary")

  5. With Sheets(1)
  6.     ar = .Range(.[a2], .[a2].End(xlDown)).Value
  7.     For Each s In ar
  8.         s5s6 = Mid(s, 5, 2)
  9.         If Mid(s, 4, 1) = "-" And (s5s6 = "11" Or s5s6 = "17" Or s5s6 = "20" Or s5s6 = "25" Or s5s6 = "37") Then d1.Item(s) = ""
  10.             
  11.         s8s9 = Mid(s, 8, 2)
  12.         If Mid(s, 7, 1) = "-" And (s8s9 = "11" Or s8s9 = "20") Then d2.Item(s) = ""
  13.     Next
  14.     For Each s In d1.keys
  15.         If Mid(s, 9, 1) = "R" And d1.exists(Left(s, 8) & "L" & Mid(s, 10)) Then
  16.             d1.Remove (s)
  17.         End If
  18.     Next
  19.     For Each s In d2.keys
  20.         If Mid(s, 12, 1) = "R" And d2.exists(Left(s, 11) & "L" & Mid(s, 13)) Then
  21.             d2.Remove (s)
  22.         End If
  23.     Next
  24.    
  25.     .[k2].Resize(d1.Count) = Application.Transpose(d1.keys)
  26.     .[n2].Resize(d2.Count) = Application.Transpose(d2.keys)
  27. End With
  28. Set d1 = Nothing: Set d2 = Nothing
  29. End Sub
複製代碼

TOP

回復 19# stillfish00
謝謝大大指教,應是正確解答

TOP

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