VBA自动filter(文本filter)有多个标准的“开始”

ActiveSheet.Range("F_Item").AutoFilter Field:=1, Criteria1:=Array("ca*", "inc*", "ps*"), Operator:=xlFilterValues 

我正在尝试使用数组筛选多个条件的列,条件是筛选以ca开头的值,或者以inc开始,或者以ps开头。

 ActiveSheet.Range("F_Item").AutoFilter Field:=1, Criteria1:="=ca*", Operator:=xlOr, Criteria2:="=inc*" 

它是这样工作的,但它仅限于search两个条件。

有了这样的数据:

在这里输入图像说明

运行这个macros:

 Sub WildAutofilter() Dim data As Range, c As Collection Dim v As String, i As Long, ary Set data = Range("A1:A23") Set c = New Collection On Error Resume Next For i = 2 To 23 v = Cells(i, 1).Value If Left(v, 2) = "ps" Or Left(v, 2) = "ca" Or Left(v, 3) = "inc" Then c.Add v, CStr(v) End If Next i On Error GoTo 0 ReDim ary(0 To c.Count - 1) For i = 1 To c.Count ary(i - 1) = c.Item(i) Next i With ActiveSheet.Range("$A$1:$A$23") .AutoFilter Field:=1, Criteria1:=(ary), Operator:=xlFilterValues End With End Sub 

会产生:

在这里输入图像说明

尝试使用高级filter

 Range("C3:C20").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Range("D3:D6"), Unique:=False