首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在VBA中使用关键字过滤多个数据?

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

Stack Overflow用户
提问于 2017-07-04 10:53:29
回答 2查看 1.7K关注 0票数 0

我想用这3个关键字过滤掉不必要的数据:质子,现代,Perodua。但是在我运行这段代码之后,我得到了“未找到命名参数”的错误。

代码语言:javascript
运行
复制
''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个条件插入到筛选字段中?

下面是我的数据示例:

EN

回答 2

Stack Overflow用户

发布于 2017-07-04 11:21:40

我不确定自动筛选是否可以采用MSDN article中给出的两个以上的标准

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

就我个人而言,在使用自动筛选之前,我更喜欢使用辅助列和函数(例如if语句)来缩小我的选择范围。

票数 1
EN

Stack Overflow用户

发布于 2017-07-04 17:08:31

出现此问题的原因是使用了通配符。在这些情况下,您不能同时使用2个以上的筛选器值。

这不起作用:

代码语言:javascript
运行
复制
rng.AutoFilter Field:=FilterField, _
    Criteria1:=Array("*Hyundai*","*Proton*","*Perodua*"), _
    Operator:=xlFilterValues

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

很好的示例代码是用this answer编写的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44896276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档