2016-05-29 61 views
1

我正在使用vba在Excel 2010中自动筛选列表,并且想要根据3个或更多“开头”条件自动筛选列表(即“a * “,”b *“,”c *“)。不幸的是,据我所知,使用Operator:= xlOr只能有两个“从......开始”的标准。Excel VBA自动过滤器 - “开始”的多个标准

VBA Autofilter (Text Filters) With Multiple Criteria of "begin with"的接受答案看起来像会起作用。然而,循环遍历列表中的每个项目并将值添加到数组中,然后自动筛选与这些项目的完全匹配是非常麻烦的。特别是对于非常大的列表。

有更好的方式来自动筛选两个以上的“开始”标准吗?

+0

你不能用[高级过滤](https://support.office.com/en-ie/article/Filter逐采用先进的准则 - 4c9222fe-8529-4cd7-a898-3f16abdff32b#bmconcepts)? – vacip

回答

0

注:接受的答案,但OP使用先前的问题

提到Gary的回答说,我们有这样的数据:

enter image description here

,我们希望看到的项目开始与任ADM

运行此宏:

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 

会产生: enter image description here

注:

  • 这是一个 “过滤器进行逐手”,而不是一个真正的AutoFilter
  • 如果你绝对必须有一个自动过滤器,然后使用我的旧帖子中的方法
+0

这很好,谢谢!但是,我需要使用自动筛选功能,因为用户需要能够在宏运行后操作和排序并继续过滤数据。 – Nate

+0

@NateBergeron我能想到的唯一的其他选择是在工作表中使用* helper *列并让宏操作该列。 –

+0

好吧,我想我只是使用你在其他问题中的方法。我会将此问题标记为答案,并提供编辑以提及我使用的是前一个答案。 – Nate