【问题标题】:VBA Autofilter (Text Filters) With Multiple Criteria of "begin with"具有“开始于”多个条件的 VBA 自动过滤器(文本过滤器)
【发布时间】:2015-04-02 22:21:41
【问题描述】:
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*"

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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    使用如下数据:

    运行这个宏:

    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
    

    将产生:

    【讨论】:

    • 谢谢老兄,它对我有用,很好的方法 :) 但我想知道它不可能做到这一点,就像在 * 的帮助下过滤一样
    【解决方案2】:

    尝试使用高级过滤器

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-18
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2021-12-14
      • 2020-04-17
      相关资源
      最近更新 更多