VBA:自动过滤器,具有多个entrie cell的下拉列表

时间:2018-04-13 09:40:27

标签: excel vba excel-vba

我想过滤包含多个输入的单元格的列,例如:

专栏: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

任何想法我做错了什么?

2 个答案:

答案 0 :(得分:2)

确实有一个*作为通配符。但是,您可以在Kriterium本身中编写它,或者在Criteteria1字符串中传递它,使其更加健壮。

您的代码最大的问题是您使用SelectActiveCellActivate等工作太多了。这是如何避免这些:

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 & "*"