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

(0)

相关推荐