Excel中VBA编程学习笔记(十二)--自动筛选
Excel中VBA编程学习笔记(十二)--自动筛选
数据之道 2018-11-26 21:06:45 6058 收藏 30
分类专栏: Excel 文章标签: Excel VBA 自动筛选
版权
Range.AutoFIlter方法可以进行自动筛选,语法结构如下:
Range.AutoFilter(Field,Criteria1Operator,Criteria2,VIsibleDropDown);
参数说明:
Field可选,按筛选的字段的整型偏移量,;例如筛选A列的字段则取值1,筛选D列的字段则取值4;
Criteria1,可选,字符串类型。筛选条件可以使用“=”,“<”,“>”,“<>”等运算符;
Operator,可选,指定筛选类型。设置为xlAutoFileterOpearator枚举中的常量之一,如下表所示:
名称 说明
xlAnd 条件1和条件2的逻辑与
xlBottom10Items 显示最低值项(条件1中指定的项数)
xlBottom10Percent 显示最低值项(条件1中指定的百分数)
xlFilterCellColor 显示单元格颜色
xlFilterDynamic 动态筛选
xlFilterFontColor 字体颜色
xlFilterIcon 筛选图标
xlFIlterValues 筛选值
xlOr 条件1与条件2的逻辑或
xlTop10Items 显示最高值项(条件1中指定的项数)
xlTop10Percent 显示最高值项(条件1中指定的百分数)
Critera2, 可选,第二个筛选条件,与Criteria1和Operator一起组成复合筛选条件;
VIsibleDropDown,可选,如果设置为true,则显示筛选字段的自动筛下拉箭头。
下表为例1到例5使用的数据
省份 年份 产量
湖北 2006 20000
广州 2012 12000
广东 2011 23000
山西 2006 8000
江西 2009 7900
湖南 2006 3000
湖北 2013 90002
广东 2007 12090
河南 2008 2230
【例1】筛选省份为湖北的数据
Worksheets(1).Select
If ActiveSheet.AutoFilterMode = False Then '检查是否开启自动筛选
Range("A1:B9").AutoFilter '没有开启的话则开启自动筛选
End If
ActiveSheet.Range("A1:B9").AutoFilter field:=1, Criteria1:="湖北"
【例2】筛选省份为“湖北”且年份为2013的数据
Worksheets(1).Select
If ActiveSheet.AutoFilterMode = False Then '检查是否开启自动筛选
Range("A:B").AutoFilter '没有开启的话则开启自动筛选
End If
ActiveSheet.Range("A:B").AutoFilter field:=1, Criteria1:="湖北"
ActiveSheet.Range("A:B").AutoFilter field:=2, Criteria1:="2013", Operator:=xlAnd
【例3】筛选省份为“湖北”或“广东”的数据
ActiveSheet.Range("A:B").AutoFilter field:=1, Criteria1:="湖北", Operator:=xlOr, Criteria2:="广东"
【例4】筛选“产量”字段高出平均值的所有记录
ActiveSheet.Range("A1:C10").AutoFilter field:=3, Criteria1:=xlfilteraboveaverage, Operator:=xlfilterdynamic
【例5】筛选“产量”字体设置为红色的记录
ActiveSheet.Range("A1:C10").AutoFilter field:=3, Criteria1:=RGB(255, 0, 0), Operator:=xlfilterfoncolor
下表为例6到例8使用的数据
【例6】筛选姓“郑”且姓名为两个字的记录
ActiveSheet.Range("A1:C10").AutoFilter field:=1, Criteria1:="=??", Operator:=xlAnd, Criteria2:="=郑*"
【例7】筛选不姓“郑”且姓名为两个字的记录
ActiveSheet.Range("A1:C10").AutoFilter field:=1, Criteria1:="=??", Operator:=xlAnd, Criteria2:="<>郑*"
【例8】清除筛选条件
ActiveSheet.ShowAllData
注意:ActiveSheet.ShowAllData必须在工作表开启了自动筛选且存在筛选条件时使用,否则会报错.
【例9】使用高级筛选,选出不重复的记录并拷贝到另外一张工作表
Sub test()
Worksheets("AVIC384").Range("D:D").AdvancedFilter _
Action:=xlFilterCopy, unique:=True, _
copyTorange:=Worksheets("tools").Range("H1")
End Sub
————————————————
版权声明:本文为CSDN博主「数据之道」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/huzhizhewudi/article/details/84556524