Excel VBA自动筛选器包含多个条件

时间:2015-10-01 08:16:49

标签: excel vba excel-vba

我需要使用运算符包含

过滤多个条件的范围

以下代码效果很好(2个critera):

shData.UsedRange.AutoFilter field:=2, Criteria1:=Array("*a*", "*b*"), Operator:=xlFilterValues

但是,不确定为什么下面的代码不起作用(超过2个标准):

shData.UsedRange.AutoFilter field:=2, Criteria1:=Array("*a*", "*b*", "*c*"), Operator:=xlFilterValues

1 个答案:

答案 0 :(得分:3)

这是自动过滤器的限制。您也不能在UI中使用两个以上的包含过滤器。

您可以使用高级过滤器,也可以创建符合条件的值数组并使用该过滤器进行过滤:

Sub MultiContainsAutofilter()
    Dim vData
    Dim shData                As Worksheet
    Dim d                     As Object
    Dim i                     As Long

    Set shData = ActiveSheet
    vData = shData.UsedRange.Columns(2)

    Set d = CreateObject("Scripting.Dictionary")

    For i = LBound(vData, 1) To UBound(vData, 1)
        If UCase$(vData(i, 1)) Like "*A*" Or UCase$(vData(i, 1)) Like "*B*" Or UCase$(vData(i, 1)) Like "*C*" Then
            d(vData(i, 1)) = Empty
        End If
    Next i

    If d.Count > 0 Then shData.UsedRange.AutoFilter Field:=2, Criteria1:=d.keys, Operator:=xlFilterValues
End Sub