標題:
[發問]
求助
[打印本頁]
作者:
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
這樣判斷你看結果符不符合
Sub test()
Dim ar, s, ss, d1, d2
Set d1 = CreateObject("scripting.dictionary")
Set d2 = CreateObject("scripting.dictionary")
With Sheets(1)
ar = .Range(.[a2], .[a2].End(xlDown)).Value
For Each s In ar
'成品
If s Like "???-????L*" Then
d1.Item(s) = ""
ss = Left(s, 8) & "R" & Mid(s, 10)
If d1.exists(ss) Then d1.Remove (ss)
End If
If s Like "???-????R*" Then '非成對保留
If Not d1.exists(Left(s, 8) & "L" & Mid(s, 10)) Then d1.Item(s) = ""
End If
'零件
If s Like "??????-????L*" Then
d2.Item(s) = ""
ss = Left(s, 11) & "R" & Mid(s, 13)
If d2.exists(ss) Then d2.Remove (ss)
End If
If s Like "??????-????R*" Then '非成對保留
If Not d2.exists(Left(s, 11) & "L" & Mid(s, 13)) Then d2.Item(s) = ""
End If
Next
.[k2].Resize(d1.Count) = Application.Transpose(d1.keys)
.[n2].Resize(d2.Count) = Application.Transpose(d2.keys)
End With
Set d1 = Nothing: Set d2 = Nothing
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
Sub test()
Dim ar, s5s6, s8s9, s, d1, d2
Set d1 = CreateObject("scripting.dictionary")
Set d2 = CreateObject("scripting.dictionary")
With Sheets(1)
ar = .Range(.[a2], .[a2].End(xlDown)).Value
For Each s In ar
s5s6 = Mid(s, 5, 2)
If Mid(s, 4, 1) = "-" And (s5s6 = "11" Or s5s6 = "17" Or s5s6 = "20" Or s5s6 = "25" Or s5s6 = "37") Then d1.Item(s) = ""
s8s9 = Mid(s, 8, 2)
If Mid(s, 7, 1) = "-" And (s8s9 = "11" Or s8s9 = "20") Then d2.Item(s) = ""
Next
For Each s In d1.keys
If Mid(s, 9, 1) = "R" And d1.exists(Left(s, 8) & "L" & Mid(s, 10)) Then
d1.Remove (s)
End If
Next
For Each s In d2.keys
If Mid(s, 12, 1) = "R" And d2.exists(Left(s, 11) & "L" & Mid(s, 13)) Then
d2.Remove (s)
End If
Next
.[k2].Resize(d1.Count) = Application.Transpose(d1.keys)
.[n2].Resize(d2.Count) = Application.Transpose(d2.keys)
End With
Set d1 = Nothing: Set d2 = Nothing
End Sub
複製代碼
作者:
aa7551
時間:
2013-1-19 00:43
回復
19#
stillfish00
謝謝大大指教,應是正確解答
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)