如何使用VBA在Excel的单个列中筛选多个条件?
我希望下面的代码能够工作,因为它来自 如果这是一个格式错误,我想纠正错误,而不是完全改变解决方案的方法。如果这种方法根本不起作用,那么我愿意尝试不同的方法 任何见解都将不胜感激如何使用VBA在Excel的单个列中筛选多个条件?,vba,excel,Vba,Excel,我希望下面的代码能够工作,因为它来自 如果这是一个格式错误,我想纠正错误,而不是完全改变解决方案的方法。如果这种方法根本不起作用,那么我愿意尝试不同的方法 任何见解都将不胜感激 ActiveSheet.Range("$A:$AI").AutoFilter Field:=11, Criteria1:=Array("Namib", "Kitchen", _ "Constantia", "Painters", _
ActiveSheet.Range("$A:$AI").AutoFilter Field:=11, Criteria1:=Array("Namib", "Kitchen", _
"Constantia", "Painters", _
"CUSTOM", "Classic", _
"Bench"), _
Operator:=xlFilterValues
您只能使用通配符筛选2个条件:
Range("$A:$AI").AutoFilter Field:=11, Criteria1:="=*Table*", Operator:=xlOr, Criteria2:="=*Chair*"
将筛选包含单词表格
或椅子
的所有数据。但这不适用于2个以上的标准
'THIS DOES NOT WORK:
Range("$A:$AI").AutoFilter Field:=11, Criteria1:=Array("*Namib*", "*Kitchen*", _
"*Constantia*", "*Painters*", _
"*CUSTOM*", "*Classic*", _
"*Bench*"), _
Operator:=xlFilterValues
请参阅:了解解决方法。这里是另一个解决方法:
Sub FilterMultipleWildcards()
Dim myCriteria As Variant, criterium As Variant
Dim filteredRng As Range
myCriteria = Array("Namib", "Kitchen", "Constantia", "Painters", "CUSTOM", "Classic", "Bench")
With ActiveSheet
With Intersect(.UsedRange, .Range("$A:$AI"))
Set filteredRng = .Offset(, .Columns.Count).Resize(1, 1)
For Each criterium In myCriteria
.AutoFilter Field:=11, Criteria1:="=*" & criterium & "*"
If Application.WorksheetFunction.Subtotal(103, .Resize(1)) > 1 Then Set filteredRng = Union(filteredRng, .Resize(.Rows.Count - 1, 1).Offset(1, 10).SpecialCells(xlCellTypeVisible))
Next
Set filteredRng = Intersect(filteredRng, .Cells)
.Parent.AutoFilterMode = False
.Resize(.Rows.Count - 1).Offset(1).EntireRow.Hidden = True
End With
filteredRng.EntireRow.Hidden = False
End With
End Sub
谁的限制存在于由
Union()
method所产生的范围的“容量”中?您使用的是什么版本的Excel?您的代码遇到了什么问题?对我来说,您的代码是有效的。但是,你确定你一直都在处理ActiveSheet
吗?好的,谢谢你的支持,深入了解这一点,我意识到我真正想要的是一个过滤器,它将过滤掉包含列表中单词的所有单元格。i、 e.如果我提供的过滤器值是表
,椅子
和沙发
;然后我想看看所有不同桌子、椅子和沙发的清单。视觉上:小桌子中桌子大桌子其他东西小椅子其他不想要的产品大沙发一些垃圾减少为:小桌子中桌子大桌子小椅子大沙发