Excel宏用于多个字符串自动过滤器

时间:2015-09-02 17:48:47

标签: excel vba excel-vba

我正在尝试根据特定列是否包含多个字符串之一,将代码添加到宏以进行自动过滤。这是我为2个字符串做的(R是范围):

R.AutoFilter Field:=ProductTypeCol, _
    Criteria1:=Array("*maintenance*", "*services*"), _
    Operator:=xlFilterValues

这完全符合我的预期,并为每个字符串显示一些行。然后我添加了第三个字符串并重新执行了宏:

R.AutoFilter Field:=ProductTypeCol, _
    Criteria1:=Array("*maintenance*", "*services*", "*training*"), _
    Operator:=xlFilterValues

而不是显示一些额外的行,这神秘地导致根本没有行。

因此,为了寻找真相,我从所有三个字符串中删除了星号,并得到了我所期望的那些:值恰好是这些字符串之一的行。 不幸的是,我真的需要那些星号。

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:1)

您不能使用通配符过滤两个以上的条件。如果你想这样做,你将不得不添加一个临时帮助列,或者使用循环过滤器或其他解决方法。

答案 1 :(得分:0)

据我所知,您不能使用通配符按两个以上标准过滤同一列。我认为您需要做的是将过滤要求移动到由公式填充的附加列中:

假设ProductTypeCol是A栏。

=SUM(COUNTIF($A2,{"=*maintenance*","=*services*","=*training*"}))>0

然后在此列上筛选Trues(如果需要,可以将其扩展为更多搜索词)