我需要使用运算符Contains过滤具有多个条件的范围
以下代码运行良好(2 个标准):
shData.UsedRange.AutoFilter field:=2, Criteria1:=Array("*a*", "*b*"), Operator:=xlFilterValues
Run Code Online (Sandbox Code Playgroud)
但是,不确定为什么下面的代码不起作用(超过 2 个条件):
shData.UsedRange.AutoFilter field:=2, Criteria1:=Array("*a*", "*b*", "*c*"), Operator:=xlFilterValues
Run Code Online (Sandbox Code Playgroud)
这是自动过滤器的限制。您也不能在 UI 中使用两个以上的contains过滤器。
您可以改为使用高级过滤器,也可以使用以下方法创建与您的条件和过滤器匹配的值的数组:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12028 次 |
| 最近记录: |