Using string array as criteria in VBA autofilter

后端 未结 2 1409
自闭症患者
自闭症患者 2020-12-07 01:19

I\'ve searched other posts and found similar issues but nothing that could help me specifically. I\'m trying to take an array of strings and use it as a filter criteria. It\

相关标签:
2条回答
  • 2020-12-07 01:45

    You do not need to transpose a single element from an array and you cannot put criteria into the 5th field if you are only referencing column E.

    Dim i As Long, arr As Variant
    arr = Array(1, 3)
    
    With Sheet17
        'to filter each value in the array one at a time
        For i = 0 To UBound(arr)
            .Columns("E").AutoFilter Field:=1, Criteria1:=arr(i)
        Next i
    
        'my values were numbers - AutoFilter likes strings in its array
        For i = LBound(arr) To UBound(arr)
            arr(i) = CStr(arr(i))
        Next i
    
        'to filter all values in the array at once specify xlFilterValues
        .Columns("E").AutoFilter Field:=1, Criteria1:=arr, _
                                 Operator:=xlFilterValues
    End With
    

    Specify the Operator:=xlFilterValues when passing an array and the Range.AutoFilter Method likes strings as the values in an array.

    0 讨论(0)
  • 2020-12-07 02:01

    The Excel documentation for AutoFilter provides some guidance. The Operator parameter takes a XlAutoFilterOperator that specifies how Criteria1 is interpreted. In your case, specifying a value of xlFilterValues will cause Criteria1 to be properly interpreted as an array of filter values.

    The following example demonstrates this:

    Dim arr As Variant
    arr = Array("Alpha", "Bravo", "Charlie")
    
    Sheet17.Range("E1").AutoFilter _
        Field:=5, _
        Criteria1:=arr, _
        Operator:=xlFilterValues
    
    0 讨论(0)
提交回复
热议问题