如何在VBA中使用关键字过滤多个数据?
我想用这3个关键词过滤掉不必要的数据:质子、现代、佩罗杜阿。但在运行此代码后,我得到了“未找到命名参数”错误如何在VBA中使用关键字过滤多个数据?,vba,excel,filter,criteria,Vba,Excel,Filter,Criteria,我想用这3个关键词过滤掉不必要的数据:质子、现代、佩罗杜阿。但在运行此代码后,我得到了“未找到命名参数”错误 ''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
''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个条件插入过滤器字段
以下是我的数据示例:
我不确定autofilter是否可以采用中给出的两个以上标准 但是,您可能希望尝试将数组传递到另一个解决方案中建议的criteria1中
就我个人而言,我更喜欢在使用autofilter之前使用带有函数(例如if语句)的帮助列来缩小我的选择范围。我不确定autofilter是否可以采用中给出的两个以上标准 但是,您可能希望尝试将数组传递到另一个解决方案中建议的criteria1中
就我个人而言,我更喜欢在使用自动筛选之前使用带有函数(例如if语句)的帮助器列来缩小我的选择范围。问题是因为使用了通配符。在这些情况下,不能同时使用两个以上的过滤器值 这不起作用:
rng.AutoFilter Field:=FilterField, _
Criteria1:=Array("*Hyundai*","*Proton*","*Perodua*"), _
Operator:=xlFilterValues
但是,您可以使用模式匹配,首先在数组中获取要过滤的范围,然后动态创建要过滤的值
好的示例代码在中。问题是由于使用了通配符。在这些情况下,不能同时使用两个以上的过滤器值 这不起作用:
rng.AutoFilter Field:=FilterField, _
Criteria1:=Array("*Hyundai*","*Proton*","*Perodua*"), _
Operator:=xlFilterValues
但是,您可以使用模式匹配,首先在数组中获取要过滤的范围,然后动态创建要过滤的值
好的示例代码位于使用数组的@RobinMackenzie链接的可能副本中。如何使用数组和关键字进行搜索?可能重复的@RobinMackenzie可能重复的使用数组的此链接。我如何使用数组和关键字进行搜索?可能重复,但如果我使用数组,我需要写下这3个汽车品牌的所有车型。还有更好的建议吗?@Icc是的,这就是这个解决方案的问题。由于我不确定您的确切情况,在这一点上,我会考虑创建一个helper列
=if(find(“Hyundai”,A1)>0,1,0)
并过滤helper列以获得您想要的结果。如果有帮助,一定要告诉我。这确实很有帮助,但很费时。无论如何,我感谢你的好意帮助@实际上,你可能只需要写一次公式,然后把它拖下来,因为找到现代汽车基本上与你原来的“现代”相似,这意味着它应该能捕捉到现代汽车的不同车型,实际上,你不必在公式中包含所有模型听起来是可行的。只需注意,vba速度部分取决于代码“点击”工作表的次数,如果你要处理代码中的选项,使用自动筛选可能会更慢。但是,如果你不关心速度,请忽略以上内容。祝贺你的解决方案!但是如果我使用数组,我需要写下这3个汽车品牌的所有车型。还有更好的建议吗?@Icc是的,这就是这个解决方案的问题。由于我不确定您的确切情况,在这一点上,我会考虑创建一个helper列=if(find(“Hyundai”,A1)>0,1,0)
并过滤helper列以获得您想要的结果。如果有帮助,一定要告诉我。这确实很有帮助,但很费时。无论如何,我感谢你的好意帮助@实际上,你可能只需要写一次公式,然后把它拖下来,因为找到现代汽车基本上与你原来的“现代”相似,这意味着它应该能捕捉到现代汽车的不同车型,实际上,你不必在公式中包含所有模型听起来是可行的。只需注意,vba速度部分取决于代码“点击”工作表的次数,如果你要处理代码中的选项,使用自动筛选可能会更慢。但是,如果你不关心速度,请忽略以上内容。祝贺你的解决方案!