2015-04-02 114 views
1
ActiveSheet.Range("F_Item").AutoFilter Field:=1, Criteria1:=Array("ca*", "inc*", "ps*"), Operator:=xlFilterValues 

我试图过滤使用阵列中的多个标准柱,条件是“开头”进行过滤,其与ca启动值,或与inc启动时,或从ps开始。VBA自动过滤(文本过滤器)同多准则

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

它以这种方式工作,但它仅限于搜索两个条件。

回答

1

有了这样的数据:

enter image description here

运行此宏:

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 

会产生:

enter image description here

+0

谢谢老兄,它为我工作,尼斯方法:)但我想知道它不可能做到一行,就像过滤* – Abhii 2015-04-03 07:10:03

1

尝试使用高级过滤

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