标签:VBA,自动筛选,Autofilter方法
许多Excel功能都可以使用VBA来实现,自动筛选就是其中之一,对应着VBA的Autofilter方法。
在功能区“数据”选项卡“排序和筛选”组中,单击“筛选”按钮(如下图1所示)就可以执行自动筛选,这也是我们使用条件筛选数据集的常见操作。
图1
如果只需要筛选数据并执行一些基本操作,建议直接使用Excel工作界面提供的内置筛选功能。而当希望将筛选数据作为自动化的一部分时,应使用VBA的Autofilter方法。
例如,假设希望基于下拉选择快速筛选数据,然后将筛选的数据复制到新工作表中。虽然这可以使用内置筛选功能和一些复制粘贴来完成,但手动完成这项工作可能需要花费大量时间。在这种情况下,使用VBA自动筛选可以加快速度并节省时间。
Autofilter方法语法
Autofilter方法的语法如下:
表达式.AutoFilter(Field,Criteria1,Operator,Criteria2,VisibleDropDown)
其中:
表达式:想要应用自动筛选的单元格区域。
Field:可选参数,这是要筛选的列号,从数据集的左侧开始计算。因此,如果要根据第二列筛选数据,则该值应为2。
Criteria1:可选参数,这是筛选数据集所基于的条件。
Operator:可选参数,如果也使用Criteria2,则可以基于Operator(运算符)组合这两个条件。以下运算符可供使用:xlAnd、xlOr、xlBottom10Items、xlTop10Items、xlBottom10Percent、xlTop10Percent、xlFilterCellColor、xlFilterDynamic、XlFilterFontColor、XlFilterIcon、XlFilterValues。
Criterial2:可选参数,这是筛选数据集所基于的第二个条件。
VisibleDropDown:可选参数,可以指定是否希望筛选下拉箭头图标显示在筛选列中。可取TRUE或FALSE。
在不使用任何参数的情况下,它只会对列应用或删除筛选图标。
代码语言:javascript复制Sub FilterRows()
Worksheets("Data").Range("A1").AutoFilter
End Sub
上面的代码简单地将AutoFilter方法应用于列(或者,如果已经应用了自动筛选,则将之删除)。
这只是意味着,如果在列标题中看不到筛选图标,则在执行上述代码后,将可以看到它,如果执行代码前可以看到它,则执行代码后它将被删除。
示例:基于文本条件筛选数据
数据集如下图2所示,想要基于“项目”列筛选数据。
图2
下面的代码筛选项目为“打印机”的所有行。
代码语言:javascript复制Sub FilterRows1()
Worksheets("Sheet1").Range("A1").AutoFilter Field:=2, Criteria1:="打印机"
End Sub
上面的代码引用了工作表Sheet1,同时引用了单元格A1(数据集中的一个单元格)。注意,这里使用了Field:=2,因为“项目”列是数据集中从左起的第二列。
示例:同一列中多个条件(AND/OR)
仍然使用上图2所示的数据集,这次筛选“项目”列中“打印机”或者“空调”的所有数据。代码如下:
代码语言:javascript复制Sub FilterRows2()
Worksheets("Sheet1").Range("A1").AutoFilter Field:=2, _
Criteria1:="打印机", _
Operator:=xlOr, _
Criteria2:="空调"
End Sub
注意,代码中使用了xlOr运算符,告诉VBA筛选满足两个条件中任意一个的数据。
同样,也可以使用AND条件。例如,如果想要筛选数量大于10但小于20的所有记录,可以使用下面的代码:
代码语言:javascript复制Sub FilterRowsAnd()
Worksheets("Sheet1").Range("A1").AutoFilter Field:=4, _
Criteria1:=">10", _
Operator:=xlAnd, _
Criteria2:="<20"
End Sub
示例:不同列中多个条件
数据集同上。如果想要筛选“项目”列中是“打印机”且销售员是“李四”的所有记录,使用下面的代码:
代码语言:javascript复制Sub FilterRows3()
With Worksheets("Sheet1").Range("A1")
.AutoFilter Field:=2, Criteria1:="打印机"
.AutoFilter Field:=3, Criteria1:="李四"
End With
End Sub
文章中所使用的示例数据和代码可到知识星球App完美Excel社群下载。
未完待续......