具有多个标准的VBA自动过滤器(文本过滤器)"以"开头

时间:2015-04-02 12:50:22

标签: excel vba excel-vba

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

我尝试使用数组过滤具有多个条件的列,条件是过滤以ca开头的值,或以inc开头,或以ps开头。< / p>

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

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

2 个答案:

答案 0 :(得分:1)

尝试使用高级过滤器

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

答案 1 :(得分: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