基于多个单元格值的Excel宏过滤器

时间:2018-07-06 07:04:17

标签: excel vba excel-vba autofilter

我有这个简单的宏,可以根据A13单元格中的值过滤行。很好。

 With ActiveSheet

    .Range("B2:F5000").AutoFilter Field:=2, Criteria1:=.Range("A13")

End With

但是我需要为此过滤器应用更多的值,特别是基于两个或更多单元格的值。所以我运行这个宏:

With ActiveSheet

    .Range("B2:F5000").AutoFilter Field:=2, Criteria1:=.Range("A13:A14:A15")

End With

但是它仅过滤基于A15单元格的值。这是为什么? 我已经在这里阅读了所有主题,但是没有解决此特定问题的方法。 谢谢大家的帮助。 Libor。

2 个答案:

答案 0 :(得分:2)

  1. 先删除旧的自动筛选器
  2. 过滤Field:=1。如果您的范围从B列开始,并且要在B列中进行过滤,那么这是第一个字段,而不是第二个字段。
  3. 如果要过滤值/数字而不是文本,请使用公式而不是值进行过滤。例如=200过滤数字200

这是一个应该起作用的示例。

With ActiveSheet 'better reference a sheet by its name like: Worksheets("Sheet1")
    If .AutoFilterMode = True Then .AutoFilterMode = False 'remove old autofilter
    .Range("B:F").AutoFilter Field:=1, Operator:=xlFilterValues, _ 
       Criteria1:=Array("=" & .Range("A13").Value, "=" & .Range("A14").Value, "=" & .Range("A15").Value)
End With

答案 1 :(得分:0)

尝试:

.Range("B2:F5000").AutoFilter Field:=2, Criteria1:=Array(Range("A13"), Range("A14"), Range("A15"))