用于多string自动筛选的Excelmacros

我试图添加代码到一个macros来自动过滤的基础上,如果一个特定的列包含几个string之一。 这是我为2个string做的(R是范围):

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

这工作正如我所料,并显示每个string的一些行。 然后我添加了第三个string并重新执行macros:

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

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

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

我在这里错过了什么?

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

据我所知,你不能通过两个以上的条件与通配符过滤同一列。 我认为您需要做的是将过滤要求移动到由公式填充的附加列,如下所示:

假设ProductTypeCol是A列

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

然后筛选Trues的这一列(如果需要,可以将其扩展到更多的search项)