我想过滤包含多个输入的单元格的列,例如:
专栏:B
B2:Banana / Apple
B3:香蕉
B4:Apple / Cherry
B5:香蕉/樱桃/苹果
B6:樱桃/香蕉/椰子
在过滤" Banana"上使用我的宏。从下拉列表中,只显示B3,但我希望其他所有其他香蕉上市:B2,B3等。
我的代码如下所示:
Sub Choose_Fruit()
'
'
Dim Kriterium As String
Range("F20").Select
Kriterium = ActiveCell.Value
'
Sheets("Fruits").Select
ActiveSheet.ListObjects("Table9").Range.AutoFilter Field:=1, Criteria1:=Kriterium
End Sub
任何想法我做错了什么?
答案 0 :(得分:2)
确实有一个*
作为通配符。但是,您可以在Kriterium
本身中编写它,或者在Criteteria1
字符串中传递它,使其更加健壮。
您的代码最大的问题是您使用Select
,ActiveCell
,Activate
等工作太多了。这是如何避免这些:
Sub ChooseFruit()
Dim Kriterium As String
Kriterium = Worksheets("SomeSheet").Range("F20")
WorkSheets("Fruits").ListObjects("Table9").Range.AutoFilter Field:=1, _
Criteria1:="*" & Kriterium & "*"
End Sub
答案 1 :(得分:1)
使用*
作为通配符来搜索" Banana"在每个细胞中。
更改
Kriterium = ActiveCell.Value
到
Kriterium = "*" & ActiveCell.Value & "*"