2017-07-04 94 views
0

我想用以下3個關鍵字過濾掉不必要的數據:Proton,Hyundai,Perodua。但是在運行這段代碼後,我得到了「找不到命名的參數」錯誤。如何使用VBA中的關鍵字過濾多個數據?

''Filtering return reason for Sheet1 
Rows("1:1").Select 
Selection.AutoFilter 

Dim rng As Range 

Set rng = ActiveSheet.Range("A1:L2671") 
FilterField = WorksheetFunction.Match("Car", rng.Rows(1), 0) 

'Turn on filter if not already turned on 
If ActiveSheet.AutoFilterMode = False Then rng.AutoFilter 

'Filter Specific Countries 
rng.AutoFilter Field:=FilterField, Criteria1:="=*Proton*" _ 
    , Operator:=xlOr, Criteria2:="=*Hyundai*" _ 
    , Operator:=xlOr, Criteria3:="=*Perodua*" 

在運行此代碼後,Criteria3被突出顯示。爲什麼我不能將3個標準插入過濾器提交?

這裏是我的數據的例子:我不知道,如果在MSDN article

但是給出自動篩選可能需要超過2個標準

Sample

+0

[使用上超過2倍的標準自動篩選](的可能的複製https://stackoverflow.com/questions/21834701/use-autofilter-on-more-than-2-條件) –

+0

@RobinMackenzie這個鏈接使用數組。如何將數組與關鍵字一起使用來搜索? – lcc

+0

[Set Auto Filtering multiple wildcards](https://stackoverflow.com/questions/16602872/set-auto-filtering-multiple-wildcards) –

回答

1

,你可能想嘗試傳遞一個數組在另一個解決方案中建議的標準1 here

個人而言,我更喜歡使用具有函數的輔助列(例如if語句)來縮小我的選擇範圍在使用自動過濾器之前。

+0

可能重複但如果我使用數組,我需要寫下所有類型的來自這3個汽車品牌的汽車。有沒有更好的建議? – lcc

+0

@Icc是這是這個解決方案的問題。因爲我不確定你的確切條件,在這一點上,我會認爲創建一個輔助列'= if(find(「Hyundai」,A1)> 0,1,0)並過濾幫助列獲得你想要的結果。請讓我知道這是否有幫助。 – AiRiFiEd

+0

這真的很有幫助但是很費時間。無論如何,我感謝你的善意幫助。 :) – lcc

1

由於使用通配符而出現問題。在這些情況下,您不能同時使用2個以上的過濾器值。

這不起作用:

rng.AutoFilter Field:=FilterField, _ 
    Criteria1:=Array("*Hyundai*","*Proton*","*Perodua*"), _ 
    Operator:=xlFilterValues 

但是,你可以通過先得到你的範圍內,在數組進行過濾和動態創建要過濾數組中的值使用模式匹配。

良好樣本代碼在this answer

相關問題