我正在使用vba自动过滤Excel 2010中的列表,并希望基于3个或更多“开头”标准自动过滤列表(即“a *”,“b *”,“c *” )。不幸的是,据我所知,使用Operator:= xlOr只能有两个“开头”标准。
VBA Autofilter (Text Filters) With Multiple Criteria of "begin with"的已接受答案看起来会起作用。然而,循环遍历列表中的每个项目并将值添加到数组中,然后自动过滤与这些项目的完全匹配是麻烦的。特别是对于非常大的列表。
有没有更好的方法来自动过滤超过两个“以”标准开头?
答案 0 :(得分:0)
注意:接受的答案,但OP正在使用之前在问题中提到的Gary的回答
假设我们有以下数据:
我们希望看到以 A , D 或 M 开头的项目。
运行此宏:
Sub ThreeWay()
Dim rng As Range, r As Range
Set rng = Range("A2:A25")
For Each r In rng
v = Left(r.Value, 1)
If v = "A" Or v = "D" Or v = "M" Then
r.EntireRow.Hidden = False
Else
r.EntireRow.Hidden = True
End If
Next r
End Sub
<强> 注意:的强>
答案 1 :(得分:0)
Sub filter()
'ie. "a*", "b*", "c*").
'1 <==
filter_0 = Range(Range("A1"), Range("A2").End(-4121)).Value
filter_00 = Application.WorksheetFunction.Transpose(filter_0)
'2 <==
For i = LBound(filter_00) To UBound(filter_00)
If Left(filter_00(i), 1) = "a" Then
ElseIf Left(filter_00(i), 1) = "b" Then
ElseIf Left(filter_00(i), 1) = "c" Then
Else '3 <==
filter_00(i) = ""
End If
Next i
'4 <==
With ActiveSheet.Range(Range("A1"), Range("A2").End(-4121))
.AutoFilter FIELD:=1, Criteria1:=Array(filter_00), Operator:=7
End With
End Sub