Board logo

標題: [發問] 求助 [打印本頁]

作者: aa7551    時間: 2013-1-18 20:28     標題: 求助

[attach]13980[/attach]資料有成品及零件,想要選出:
一成品中找出第五,六碼為11,17,20,25,37,及第九碼有相對之L,R(其餘碼相同者)只選出L
二零件第八,九碼為11,20,及第十二碼有相對之L,R(其餘碼相同者)只選出L
請各位大大幫忙
作者: aa7551    時間: 2013-1-18 20:30

忘加附件,將附件補上,請各位幫忙
作者: yanto913    時間: 2013-1-18 21:24

一.成品如a,b項,在第九碼各為L,R(其餘均為相同)視為相同,只需選a項

只需選a項??
不懂意思?
作者: aa7551    時間: 2013-1-18 21:45

回復 3# yanto913
因為L與R代表左,右,兩者尺寸是相同,所以只選一邊L
作者: yanto913    時間: 2013-1-18 22:15

本帖最後由 yanto913 於 2013-1-18 22:17 編輯

我用輔助的儲存格,不知道這樣有沒有達到需求
之後使用篩選
[成品輔助]為"成立"

[零件輔助]為"成立"
即可
作者: stillfish00    時間: 2013-1-18 22:29

回復 4# aa7551
114-1913F1A-VC  也算在成品嗎?
作者: aa7551    時間: 2013-1-18 22:35

回復 6# stillfish00
114-1913F1A-VC  也算在成品嗎?這也算是成品,成品的編碼是xxx-xxxxL或xxx-xxxxR,後來增加很多規格,就在後面加了很多碼,造成資料很雜,那零件就把碼加到前面如03-xxx-xxxxL
作者: aa7551    時間: 2013-1-18 22:38

回復 5# yanto913
謝謝大大的回應,解決一大問題
作者: aa7551    時間: 2013-1-18 22:49

回復 5# yanto913
217-1171PXLDHM7
--A660顯示未成立,事實上它應成立
作者: yanto913    時間: 2013-1-18 22:54

回復 9# aa7551


    並無"R"或"L"
作者: aa7551    時間: 2013-1-18 22:59

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

改成不等於"R"
作者: stillfish00    時間: 2013-1-18 23:05

本帖最後由 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
複製代碼

作者: aa7551    時間: 2013-1-18 23:18

回復 13# stillfish00
115-1926L-A
132-1905L-LD-U
211-1946L-A
211-1946L-A-S        這些不符合條件,成品的第五,六碼要等於11,17,20,25,37
作者: Hsieh    時間: 2013-1-18 23:26

回復 9# aa7551

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

    [attach]13986[/attach]
作者: aa7551    時間: 2013-1-18 23:32

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

回復 15# Hsieh
謝謝大大指教,提供一個新方式
作者: aa7551    時間: 2013-1-19 00:07

筆者作業模式是逐筆刪除:
一.成品第五,六碼是否符合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),如無配對,則保留
作者: stillfish00    時間: 2013-1-19 00:21

回復 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
複製代碼

作者: aa7551    時間: 2013-1-19 00:43

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




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)