我想用这3个关键字过滤掉不必要的数据:质子,现代,Perodua。但是在我运行这段代码之后,我得到了“未找到命名参数”的错误。
''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个条件插入到筛选字段中?
下面是我的数据示例:
发布于 2017-07-04 11:21:40
我不确定自动筛选是否可以采用MSDN article中给出的两个以上的标准
但是,您可能希望尝试按照另一个解决方案here中的建议将数组传递到criteria1中
就我个人而言,在使用自动筛选之前,我更喜欢使用辅助列和函数(例如if语句)来缩小我的选择范围。
发布于 2017-07-04 17:08:31
出现此问题的原因是使用了通配符。在这些情况下,您不能同时使用2个以上的筛选器值。
这不起作用:
rng.AutoFilter Field:=FilterField, _
Criteria1:=Array("*Hyundai*","*Proton*","*Perodua*"), _
Operator:=xlFilterValues
但是,您可以使用模式匹配,首先在数组中获得要过滤的范围,然后动态创建要过滤的数组的值。
很好的示例代码是用this answer编写的
https://stackoverflow.com/questions/44896276
复制相似问题