2017-07-04 98 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

相关问题