如何使用VBA中的关键字过滤多个数据?

时间:2017-07-04 02:53:29

标签: vba excel-vba filter criteria excel

我想用这3个关键字过滤掉不必要的数据:Proton,Hyundai,Perodua。但我得到了#34;未找到的名字参数"运行此代码后出错。

''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个标准插入过滤器字段?

以下是我的数据示例:

Sample

2 个答案:

答案 0 :(得分:1)

我不确定自动过滤器是否可以采用MSDN article中给出的2个以上的标准

但是,您可能希望尝试将数组传递到另一个解决方案中提出的criteria1 here

就个人而言,我更喜欢使用带有函数的帮助列(例如if语句)来缩小我的选择范围,然后再使用自动过滤器。

答案 1 :(得分:1)

由于使用通配符,会出现此问题。在这些情况下,您不能同时使用2个以上的过滤值。

这不起作用:

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

但是,您可以使用模式匹配,方法是先在阵列中过滤您的范围,然后动态创建要过滤的数组值。

好的示例代码位于this answer