Excel VBA范例大全
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第5部分 数据筛选

工作簿中数据较多时,为便于查看指定部分数据,可以通过Excel的数据筛选功能将目标数据筛选出来。

筛选的分类:按条件类型来分可以分为按数值筛选、按字符筛选、按颜色筛选三种;按筛选条件个数来分可以分为单条件筛选(自动筛选都是单条件筛选)和双条件筛选(在自定义筛选选项中操作)两种方式;按筛选方式来分可以分为自动筛选和高级筛选,其中高级筛选可以将筛选结果显示在其他区域。

按颜色筛选是Excel 2007新增功能,若文件用Excel 2003或者更低版本保存时颜色筛选将不可用。

本部分主要知识点:

● 单条件数据筛选

● 多条件数据筛选

● 删除筛选

第19章 单条件筛选

单条件筛选一般使用自动筛选方式操作。每列可以按照一个规则进行筛选,可以是数值大小,也可以是字符(包含通配符)比较,还可以以单元格颜色为基准进行筛选。本章通过6个实例演示单条件筛选中的技巧。

● 实例128筛选大于60分之成绩

● 实例129筛选小于等于60分之数据

● 实例130筛选高于平均值之数据

● 实例131筛选前五个最大值

● 实例132筛选不包含指定字符之数据

● 实例133按颜色筛选数据

实例128 筛选大于60分之成绩

【技巧说明】 筛选当前列大于60分之成绩。

【案例介绍】 如图5.1所示,成绩表中成绩分布于50分至98分之间,现需要显示大于60分的成绩,其他数据自动隐藏。

【案例实现】 参见以下步骤:

[1] 使用快捷键Alt+F11进入VBE(Visual Basic Editor)环境。

[2] 单击菜单【插入】\【模块】,打开模块代码窗口。

[3] 在右边代码窗口输入以下代码:

Sub筛选大于60分之成绩()
    ActiveCell.CurrentRegion.AutoFilter Field:=2, Criteria1:=">60",
    Operator:=xlAnd
End Sub

[4] 关闭VBE窗口返回到工作表。

[5] 选中当前区域中任意单元格,用快捷键Alt+F8调出运行宏窗口,然后单击“执行”按钮,当前区域中大于60分的数据已筛选出来,结果如图5.2所示。

图5.1 待筛选的原始数据

图5.2 筛选后的成绩表

提示

本实例参见光盘样本:..\第5部分\实例128.xlsm。

【相关知识说明】

AutoFilter:使用“自动筛选”方式筛选一个列表。其参数列表见表5.1。

表5.1 AutoFilter参数列表

实例129 筛选小于等于60分之数据

【技巧说明】 筛选小于等于60分之数据。

【案例实现】 参见以下步骤:

【案例介绍】 以实例128数据为例,筛选出小于等于60分之数据。

[1] 使用快捷键Alt+F11进入VBE(Visual Basic Editor)环境。

[2] 单击菜单【插入】\【模块】,打开模块代码窗口。

[3] 在右边代码窗口输入以下代码:

Sub筛选小于等于60分之成绩()
    ActiveCell.CurrentRegion.AutoFilter Field:=2, Criteria1:="<=60",Operator:=xlAnd
End Sub

[4] 关闭VBE窗口返回到工作表。

[5] 选中当前区域中任意单元格,用快捷键Alt+F8调出运行宏窗口,然后单击“执行”按钮,当前区域中小于等于60分的数据都已筛选出来。

提示

本实例参见光盘样本:..\第5部分\实例129.xlsm。

实例130 筛选高于平均值之数据

【技巧说明】 筛选高于平均值之数据。

【案例介绍】 以实例128数据为例,筛选出高于平均值之数据。

【案例实现】 参见以下步骤:

[1] 使用快捷键Alt+F11进入VBE(Visual Basic Editor)环境。

[2] 单击菜单【插入】\【模块】,打开模块代码窗口。

[3] 在右边代码窗口输入以下代码:

S Sub筛选高于平均分之成绩()
ActiveCell.CurrentRegion.AutoFilter Field:=2, _
Criteria1:=xlFilterAboveAverage, Operator:=xlFilterDynamic
End Sub

[4] 关闭VBE窗口返回到工作表。

[5] 选中当前区域中任意单元格,用快捷键Alt+F8调出运行宏窗口,然后单击“执行”按钮,当前区域中高于平均值之数据已筛选出来,结果如图5.3所示。

图5.3 筛选出高于平均值的数据

提示

本实例参见光盘样本:..\第5部分\实例130.xlsm。

【相关知识说明】

(1)xlFilterAboveAverage:表示筛选条件为“高于平均值”。数据筛选的条件列表见表5.2。

表5.2 数据筛选的条件列表

(2)Operator:指定用于关联两个筛选条件的操作符。本实例中使用xlFilterDynamic表示动态筛选。可选项见表5.3。

表5.3 筛选条件间的可选操作符列表

实例131 筛选前五个最大值

【技巧说明】 筛选前五个最大值。

【案例介绍】 以实例128数据为例,筛选出前五个最大值。

【案例实现】 参见以下步骤:

[1] 使用快捷键Alt+F11进入VBE(Visual Basic Editor)环境。

[2] 单击菜单【插入】\【模块】,打开模块代码窗口。

[3] 在右边代码窗口输入以下代码:

Sub筛选前五个最大值()
    ActiveCell.CurrentRegion.AutoFilter Field:=2, Criteria1:="5", Operator:=xlTop10Items
End Sub

[4] 关闭VBE窗口返回到工作表。

[5] 选中当前区域中任意单元格,用快捷键Alt+F8调出运行宏窗口,然后单击“执行”按钮,当前区域中前五个最大值已筛选出来,结果如图5.4所示。

图5.4 筛选出的前五个最大值

提示

本实例参见光盘样本:..\第5部分\实例131.xlsm。

实例132 筛选不包含指定字符之数据

【技巧说明】 筛选不包含“差”之数据。

【案例介绍】 以实例128数据为例,筛选出评语不为“差”的数据。

【案例实现】 参见以下步骤:

[1] 使用快捷键Alt+F11进入VBE(Visual Basic Editor)环境。

[2] 单击菜单【插入】\【模块】,打开模块代码窗口。

[3] 在右边代码窗口输入以下代码:

Sub筛选不包含“差”之数据()
  ActiveCell.CurrentRegion.AutoFilter Field:=3, Criteria1:="<>差"
End Sub

[4] 关闭VBE窗口返回到工作表。

[5] 选中当前区域中任意单元格,用快捷键Alt+F8调出运行宏窗口,然后单击“执行”按钮,当前区域中评语不为“差”的数据已筛选出来,结果如图5.5所示。

图5.5 筛选出的评语不为“差”的数据

提示

本实例参见光盘样本:..\第5部分\实例132.xlsm。

【相关知识说明】

(1)AutoFilter:使用“自动筛选”方式筛选一个列表。其参数列表见表5.1。

(2)Criteria1:="<>差":筛选条件为“<>差”。可以使用通配符,例如,评语中包含“极差”和“特别差”等,条件可以改用“<>*差”,表示排除最后一个字符为“差”的数据。

通配符有两个:*和?,前者代表任意字符,后者代表单个字符。

实例133 按颜色筛选数据

【技巧说明】 按颜色筛选数据。

【案例介绍】 如图5.6所示,部分数据已用颜色标示,部分无背景色,现需筛选出有黄色背景色的数据。

【案例实现】 参见以下步骤:

[1] 使用快捷键Alt+F11进入VBE(Visual Basic Editor)环境。

[2] 单击菜单【插入】\【模块】,打开模块代码窗口。

[3] 在右边代码窗口输入以下代码:

Sub按颜色筛选数据()
  ActiveCell.CurrentRegion.AutoFilter Field:=3,
      Criteria1:=RGB(255, 255, 0), Operator:=xlFilterCellColor
End Sub

[4] 关闭VBE窗口返回到工作表。

[5] 选中当前区域中任意单元格,用快捷键Alt+F8调出运行宏窗口,然后单击“执行”按钮,当前区域中评语为黄色背景的数据已筛选出来,结果如图5.7所示。

图5.6 以颜色标示评语的成绩表

图5.7 仅筛选出黄色背景的数据

提示

本实例参见光盘样本:..\第5部分\实例133.xlsm。

【相关知识说明】

Criteria1:=RGB(255, 255, 0 ):表示筛选条件为黄色。