返回列表 上一主題 發帖

[發問] 列出更多的對應資料

回復 38# 軒云熊
如果是 品號 品名 規格 數量 其中一個忘記打 可以試試這個:)
Public Sub 模糊篩選()

Application.ScreenUpdating = False
Range(Sheets(2).Cells(2, 1), Sheets(2).Cells(2, 4).End(xlDown)).Font.Color = RGB(255, 0, 0)
G = True
Sheets(3).Select
Sheets(3).Range(Cells(1, 1), Cells(1, 4).End(xlDown)).Clear
Sheets(2).Select

For K = 2 To Sheets(1).Cells(2, 4).End(xlDown).Row
    X = Trim(Sheets(1).Cells(K, 3))
   
    If Sheets(1).Cells(K, 1) = "" And Sheets(1).Cells(K, 2) = "" And Sheets(1).Cells(K, 3) = "" And Sheets(1).Cells(K, 4) = "" Then
       Exit For
    End If
   
    For i = 2 To Cells(2, 3).End(xlDown).Row '依條件篩選

        If X <> "" And Sheets(1).Cells(K, 3) <> "" Then
            
            Sheets(2).Cells(2, 3).AutoFilter
            Cells(i, 1).AutoFilter Field:=3, Criteria1:="=*" & Mid(X, 1, 8) & "*", Operator:=xlOr, Criteria2:="=" & X & ""
            Range(Sheets(2).Cells(2, 1), Sheets(2).Cells(2, 4).End(xlDown)).Font.Color = RGB(0, 0, 0)

            Cells(i, 1).AutoFilter Field:=3, Criteria1:="=*" & Mid(X, 1, 5) & "*", Operator:=xlOr, Criteria2:="=" & X & ""
            Range(Sheets(2).Cells(2, 1), Sheets(2).Cells(2, 4).End(xlDown)).Font.Color = RGB(0, 0, 0)
            
            If X Like "####[-.]*" Or X Like "####[A-Z]*" Then
                Cells(i, 1).AutoFilter Field:=3, Criteria1:="=*" & Mid(X, 1, 4) & "*", Operator:=xlOr, Criteria2:="=" & X & ""
                Range(Sheets(2).Cells(2, 1), Sheets(2).Cells(2, 4).End(xlDown)).Font.Color = RGB(0, 0, 0)
            End If

            If Sheets(1).Cells(K, 2) <> "" Then
                 If ActiveSheet.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Areas.Count = 1 Then
                     Sheets(2).Cells(2, 3).AutoFilter
                     Cells(i, 1).AutoFilter Field:=2, Criteria1:="=*" & X & "*", Operator:=xlOr, Criteria2:="=" & X & ""
                     Range(Sheets(2).Cells(2, 1), Sheets(2).Cells(2, 4).End(xlDown)).Font.Color = RGB(0, 0, 0)
                     
                     Cells(i, 1).AutoFilter Field:=2, Criteria1:=Sheets(1).Cells(K, 2)
                     Range(Sheets(2).Cells(2, 1), Sheets(2).Cells(2, 4).End(xlDown)).Font.Color = RGB(0, 0, 0)
                 End If
            End If
            
            
        End If
         
        If X = "" Then
            X = Trim(Sheets(1).Cells(K, 2))
            Cells(i, 1).AutoFilter Field:=2, Criteria1:="=*" & X & "*", Operator:=xlOr, Criteria2:=Sheets(1).Cells(K, 2)
            Range(Sheets(2).Cells(2, 1), Sheets(2).Cells(2, 4).End(xlDown)).Font.Color = RGB(0, 0, 0)
            If ActiveSheet.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Areas.Count = 1 Then
                Sheets(2).Cells(2, 3).AutoFilter
                Cells(i, 1).AutoFilter Field:=1, Criteria1:=Sheets(1).Cells(K, 1)
                Range(Sheets(2).Cells(2, 1), Sheets(2).Cells(2, 4).End(xlDown)).Font.Color = RGB(0, 0, 0)
            If ActiveSheet.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Areas.Count = 1 Then
            Exit For
            End If
                Range(Sheets(2).Cells(2, 1), Sheets(2).Cells(2, 4).End(xlDown)).Font.Color = RGB(0, 0, 0)
            End If
        End If
        
    Exit For
    Next i
   
    If G = True Then
        Range(Sheets(2).Cells(1, 1), Sheets(2).Cells(1, 4).End(xlDown)).Copy Sheets(3).Cells(1, 1)
        G = False
    Else
        Range(Sheets(2).Cells(2, 1), Sheets(2).Cells(2, 4).End(xlDown)).Copy Sheets(3).Cells(1, 1).End(xlDown).Offset(1, 0)
    End If
    Sheets(2).Cells(2, 3).AutoFilter

Next K
Sheets(3).Select
Range(Sheets(3).Cells(2, 1), Sheets(3).Cells(2, 4).End(xlDown)).RemoveDuplicates Columns:=1
Range(Sheets(3).Cells(2, 1), Sheets(3).Cells(2, 4).End(xlDown)).Font.Color = RGB(0, 0, 0)
Application.ScreenUpdating = True
End Sub

TOP

回復 40# qaqa3296
你有試過我給你的最後一個 修改後的嗎?  我剛才測試一下 是可以的   
我的 思路是 規格 沒有 就找品名 如果品名在沒有就找品號    不知這樣的方向是不是對的   但是與準大的比對結果是一樣的
如果還有不正確的地方請你告訴我  希望你能夠給我一個機會可以學習  ^_^

TOP

本帖最後由 軒云熊 於 2020-8-26 18:51 編輯

回復 40# qaqa3296

剛才 測試一下  如果  品號跟規格 為空白  只找品名 如果是英文開頭 準大的是會顯示
   如果是中文開頭但  品號跟規格 為空白  不會顯示    唯一不同的地方在這
目前看到是這樣 但我不知道是不是你要的

TOP

回復 43# qaqa3296

沒辦法 還是有差  格式太複雜 我投降了.. 不過還是把 檔案放上來 你看看吧 >"<  


javascript:;

結果0830.rar (40.23 KB)

TOP

結論是...不能用篩選...呵呵..

TOP

本帖最後由 軒云熊 於 2020-8-30 22:33 編輯

回復 43# qaqa3296
這是用 先比對  然後再比對結果與尋找範圍的相似度 最低的 再篩選  但還是有差...我把檔案放上來 你看一下...>"<  真的 ...沒辦法了..
會多M00027        煞車        6864        32 跟 M00025        車架        6844        0 因為裡面有相似度的問題..




javascript:;

結果083002.rar (48.39 KB)

TOP

本帖最後由 軒云熊 於 2020-9-1 19:52 編輯

回復 47# qaqa3296
抱歉  沒有整理就直接上傳 麻煩你在幫我測試一次 我想知道行不行  真的跑不動 就算了..  >"<

javascript:;

結果0901.rar (39.5 KB)

TOP

回復 49# qaqa3296
那是 判斷篩選結果是不是空值 我找到 GBKEE 大大以前寫的方式  拜託你在有空的話幫我在試一次看看還會不會這樣
我也是新手 希望我們可以互相學習  我也希望你不要測試的太晚 有空再測試就好了 我的想法是 先確定邏輯沒有問題之後
再往字典加陣列的方向前進 慢慢學習研究 一步一步來 如果真的不行 再把問題提出來 問大大們應該可以得到答案  
前提是你願意花時間  陪我一起學習研究   >"<       真的很謝謝你願意幫我測試


javascript:;

結果0902.rar (40.25 KB)

TOP

回復 51# qaqa3296
這是在修改後的 還是有差 一點  有空的話 幫我測試一下   這次是用準大的規則 加上拆字的方式  不知道行不行 .麻煩你了...^^"



    javascript:;

結果0906.rar (38.14 KB)

TOP

回復 51# qaqa3296
這是 陣列 加 Function 的方式寫的 應該會比較快一點點.


javascript:;

結果0906_1.rar (44.14 KB)

TOP

        靜思自在 : 滴水成河。粒米成蘿,勿輕己靈,勿以善小而不為。
返回列表 上一主題