![Excel VBA范例大全](https://wfqqreader-1252317822.image.myqcloud.com/cover/777/687777/b_687777.jpg)
第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所示。
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0207_0007.jpg?sign=1739026005-y8mypQQJjBqPQ36Q24T0J68w0aWu0OXk-0-f15b3b9af456ed9801c8e7e70bebb4c4)
图5.1 待筛选的原始数据
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0207_0008.jpg?sign=1739026005-qWiI88hdXfSPciktedLcunE0twk6HiRN-0-9fdbc309e7816abd2875172b85e06b12)
图5.2 筛选后的成绩表
提示
本实例参见光盘样本:..\第5部分\实例128.xlsm。
【相关知识说明】
AutoFilter:使用“自动筛选”方式筛选一个列表。其参数列表见表5.1。
表5.1 AutoFilter参数列表
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0207_0009.jpg?sign=1739026005-yOxKY7Q7AcQepVTvTbk3PagTHHE9OFUe-0-d0ed72f537af8b031cb7dfdb46f924da)
实例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所示。
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0209_0003.jpg?sign=1739026005-gftMGZ2UJprZ1vJRAKPwLqCTQmyV6xmX-0-7aa2f8663b455606af9d252b1fbef7d6)
图5.3 筛选出高于平均值的数据
提示
本实例参见光盘样本:..\第5部分\实例130.xlsm。
【相关知识说明】
(1)xlFilterAboveAverage:表示筛选条件为“高于平均值”。数据筛选的条件列表见表5.2。
表5.2 数据筛选的条件列表
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0209_0004.jpg?sign=1739026005-p95VPw3AFr3jgg6DM3IYiQdTYDZmNH3d-0-e522507504dcf935f773122896e191f7)
(2)Operator:指定用于关联两个筛选条件的操作符。本实例中使用xlFilterDynamic表示动态筛选。可选项见表5.3。
表5.3 筛选条件间的可选操作符列表
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0210_0002.jpg?sign=1739026005-TBK37BxBOlsTnbnE7HMGO3nToXTbBXsq-0-2715227d8cbf5e414846feaaf2a83cbd)
实例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所示。
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0211_0003.jpg?sign=1739026005-pYuM40cDM31Dbbo5jJ08JzCgFwJ38Zf0-0-1ae799b5ab3d5a0e2c255d0552db7a06)
图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所示。
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0211_0010.jpg?sign=1739026005-dwx7sR0LPfmLCEIS8LKIiODJsdlSlMet-0-7b26f1360402ac60fef0bc202189732d)
图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所示。
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0212_0007.jpg?sign=1739026005-6NXonxH4D0Murj6l2Ijk9V1W0mCdUgmI-0-fd71d37e8b9b9c6108814f22c5468314)
图5.6 以颜色标示评语的成绩表
![](https://epubservercos.yuewen.com/AED0BE/3590497903471501/epubprivate/OEBPS/Images/figure_0212_0008.jpg?sign=1739026005-Ky54MRiIpy8T0MzO6dmfOek5l7fyFOrm-0-2cd7c0314162ff162ddc908a83923abf)
图5.7 仅筛选出黄色背景的数据
提示
本实例参见光盘样本:..\第5部分\实例133.xlsm。
【相关知识说明】
Criteria1:=RGB(255, 255, 0 ):表示筛选条件为黄色。