Range().autofilter 语法:Range().autofilter field,Criteria1,operator,criteria2,visibledropdown

vba自动筛选教程(VBA学习笔记筛选方法)(1)

Field 指筛选哪一列的列序号,示例:Range("A1").AutoFilter Field:=[F1].Column, Criteria1:="*100.00%*"

vba自动筛选教程(VBA学习笔记筛选方法)(2)

通常Field会被写成数字,如:Range("A1").AutoFilter 6,Criteria1:="*100.00%*",但列序号比较小时,这样写很方便,很大的话要对照表格1列1列的数过去? 其次注意 6 与前面的Range("A1")没有关联,前面写成Range("B1"),这里也是6,不能写成5。

示例中:Criteria1:="*100.00%*" 加“*”号是因为示例图中F列不是数值,是字符。不加不能正确匹配(如下图),所以用此功能前,要先设置好单元格的格式。

vba自动筛选教程(VBA学习笔记筛选方法)(3)

筛选日期的写法 Range("A1").AutoFilter Field:=6, Criteria1:="<=2021-8-3",这里的日期格式不能写成2021/8/3。

Operator 这个参数有很多值,讲解几个常用的:

1、xland: Criteria1,xland,criteria2 条件1与条件2并且关系

例:Range("A1").AutoFilter [F1].Column, Criteria1:="<100.00%", Operator=xland, Criteria1:=">50%" 这两条件都是对同1列数据的。

2、xlor: Criteria1,xlor,criteria2 条件1与条件2或者关系

3、xltop10items: Criteria1:=10,xltop10items 筛选值排在前10的数据;Criteria1:=5 就只筛5项。例:Range("A1").AutoFilter [E1].Column, Criteria1:=10, Operator:= xltop10items

vba自动筛选教程(VBA学习笔记筛选方法)(4)

4、xlbottom10items: Criteria1:=10,xlbottom10items 筛选值排在后10的数据。

5、xlfiltervalues 筛选值,配合数组array使用。例:Range("A1").AutoFilter [B1].Column, Criteria1:=Array("张庆", "杨念"), Operator:=xlFilterValues

vba自动筛选教程(VBA学习笔记筛选方法)(5)

6、筛选大于平均值的项,语句:

Range("A1").AutoFilter [E1].Column, xlFilteraboveaverage,xlfilterdynamic

7、筛选日期在9月的项,语句:

Range("A1").AutoFilter 5, xlFilterAlldatesinperiodseptember,xlfilterdynamic

注:语句简写时,Criteria1:=,Operator:= 这些参数名要一起省略,不可以省略某个,写上某个。

Visibledropdown 参数的值为True,false。True就是显示 筛选的那个倒三角按钮。

筛选出来的数据直接复制到其它工作表,是不需要带可见单元格参数的,复制的数据都是筛选后的数据。Range("a1").CurrentRegion.Copy: Sheets(3).[H1].PasteSpecial xlPasteValues

如图:

vba自动筛选教程(VBA学习笔记筛选方法)(6)

新建工作表代码:Worksheets.Add after:=ActiveSheet;释义:新建工作表,位于当前工作表之后。ActiveSheet.Index 当前工作表在工作簿中的序号。将筛选出的数据复制到新建工作表中,如图:

vba自动筛选教程(VBA学习笔记筛选方法)(7)

附:如果有2列进行条件筛选,就是再增加一条筛选语句,Field为另一列的列号;有3列,就写3条筛选语句。

,