Excel 2010 VBA 入门 039 按条件隐藏数据行
目录
示例:
实现代码1
行和列的隐藏
实例代码2
单元格对象的AutoFilter(自动筛选)方法
实现代码3
单元格对象的AdvancedFilter(高级筛选)方法
示例:
在Excel中,经常使用自动筛选功能筛选数据,将某些条件的数据显示而隐藏其他数据。如图所示,该表为某公司商品出口数据记录。现希望筛选出销往印度尼西亚的所有销售记录,并隐藏其他销售记录,该如何用VBA实现?
日期 | 产销国 | 地区 | 出口金额 |
2010/1/1 | 韩国 | A | 18879 |
2010/1/1 | 台湾省 | A | 17245 |
2010/1/2 | 土耳其 | A | 10500 |
2010/1/2 | 韩国 | A | 367 |
2010/1/5 | 印度尼西亚 | A | 33050 |
2010/1/7 | 印度尼西亚 | A | 22150 |
2010/1/7 | 印度尼西亚 | A | 20832 |
2010/1/8 | 香港 | A | 8216 |
2010/1/9 | 土耳其 | A | 19583 |
2010/1/9 | 突尼斯 | AF | 25200 |
2010/1/9 | 越南 | A | 51920 |
2010/1/10 | 俄罗斯联邦 | E | 37840 |
2010/1/11 | 台湾省 | A | 32032 |
2010/1/11 | 菲律宾 | A | 14586 |
2010/1/12 | 香港 | A | 6723 |
2010/1/13 | 韩国 | A | 19460 |
2010/1/13 | 台湾省 | A | 178507 |
2010/1/13 | 越南 | A | 6580 |
2010/1/13 | 荷兰 | E | 99084 |
2010/1/14 | 阿根廷 | SA | 12000 |
2010/1/15 | 南非 | AF | 22700 |
2010/1/16 | 泰国 | A | 23065 |
2010/1/16 | 加拿大 | NA | 20000 |
2010/1/17 | 澳大利亚 | A | 3783 |
2010/1/18 | 越南 | A | 1100 |
2010/1/19 | 比利时 | E | 54180 |
2010/1/19 | 叙利亚 | A | 6800 |
2010/1/20 | 马来西亚 | A | 16211 |
2010/1/20 | 阿拉伯联合酋长国 | A | 11120 |
2010/1/20 | 澳大利亚 | A | 9219 |
2010/1/21 | 泰国 | A | 5300 |
2010/1/21 | 埃及 | AF | 72260 |
2010/1/22 | 沙特阿拉伯 | A | 16980 |
2010/1/22 | 香港 | A | 2190 |
2010/1/22 | 巴西 | SA | 92340 |
2010/1/23 | 俄罗斯联邦 | E | 37180 |
2010/1/24 | 泰国 | A | 22800 |
2010/1/24 | 日本 | A | 21800 |
2010/1/24 | 韩国 | A | 152210 |
2010/1/25 | 法国 | E | 47103 |
2010/1/25 | 波兰 | E | 21062 |
2010/1/27 | 澳大利亚 | A | 23180 |
2010/1/27 | 阿尔及利亚 | AF | 36200 |
2010/1/27 | 英国 | E | 27210 |
2010/1/28 | 新加坡 | A | 22400 |
2010/1/28 | 委内瑞拉 | SA | 42140 |
2010/1/28 | 印度 | A | 15501 |
2010/1/28 | 日本 | A | 12650 |
2010/1/29 | 韩国 | A | 24766 |
2010/1/29 | 泰国 | A | 23148 |
2010/1/30 | 墨西哥 | SA | 36260 |
2010/1/30 | 香港 | A | 2125 |
2010/1/31 | 土耳其 | A | 12090 |
2010/1/31 | 韩国 | A | 21180 |
2010/1/31 | 印度尼西亚 | A | 22100 |
2010/1/31 | 印度尼西亚 | A | 7500 |
2010/1/31 | 南非 | AF | 21499 |
2010/1/31 | 俄罗斯联邦 | E | 34620 |
实现代码1
Option ExplicitSub 按条件隐藏数据行()Dim Rng As RangeFor Each Rng In Range(Range("B2"), Cells(Rows.Count, "B").End(xlUp))'判断是否为印度尼西亚If Rng.Value <> "印度尼西亚" ThenRng.EntireRow.Hidden = TrueEnd IfNext
End Sub
行和列的隐藏
Hidden属性是单元格对象(Range)的一个属性,该属性表示单元格是否隐藏,其值可为True或者False,当为True时,表示隐藏。
Hidden属性仅能用于整行或整列的单元格区域,而不能用作某一个单元格。如本例中,当找到满足条件的数据单元格时,需要对该单元格所在的整行设置Hidden属性为True。若本例直接使用代码Rng. Hidden=True,则会出现如图所示的错误。
实例代码2
Sub 按条件隐藏数据行2()'criteria1,最后一个字符是数字1,不是字母lRange("A1").AutoFilter Field:=2, Criteria1:="印度尼西亚"
End Sub
单元格对象的AutoFilter(自动筛选)方法
自动筛选功能是Excel常用的一个重要功能之一,利用该功能可以方便地筛选并隐藏数据。在VBA中对应的方法为AutoFilter方法,该方法的语法为
Rng.AutoFilter [Field],[Criteria1],[Operator],[Criteria2],[VisibleDropDown]
其中,Rng为单元格,使用AutoFilter方法只需指明数据区域的任何一个单元格即可,因而本例使用A1单元格。
- 参数Field为字段的序号,即表示该数据区域第几列为条件进行筛选。本例中需要以产销国为筛选条件,而该列为该数据区域的第2列,因而该参数设置为2。
- 参数Criteria1和Criteria2为筛选的条件。本例只需要一个条件,筛选值为“印度尼西亚”的数据,因而可以直接设置Criterial为“印度尼西亚”。当筛选条件不等于“印度尼西亚”时,使用Criteria1:="印度尼西亚"
- 参数Operator表示Criteria1和Criteria2的筛选条件操作符,可以为表中的任一常量。
表 AutoFilter方法的Operator参数
常 量 |
值 |
说 明 |
xlAnd |
1 |
Criteria1和Citeiia2的逻辑与 |
xlOr |
2 |
Criteria1和criteria2的逻辑或 |
xlFilterCellColor |
8 |
单元格颜色参数Criteria1的值为指定的颜色值) |
xlFilterDynamic |
11 |
动态筛选 |
xlFilterFontColor |
9 |
字体颜色(参数Criteria1的值为指定的颜色值) |
xlFilterIcon |
10 |
筛选图标 |
xlFilterValues |
7 |
筛选值 |
xlBottom10Items |
4 |
显示最低值项(参数Criteria1的值为指定的项数) |
xlBottom10Percent |
6 |
显示最低值项(参数Criteria1的值为指定的百分数) |
xlToplOItems |
3 |
显示最高值项(参数Criteria1的值为指定的项数) |
xlTop1OPercent |
5 |
显示最高值项(参数Criteria1的值为指定的百分数) |
- 参数VisibleDropDown为是否显示下拉箭头,为True时表示显示,为False时表示不显示。
实现代码3
Sub 按条件隐藏数据行3()'创建临时条件区域Range("H1").Value = "产销国"Range("H2").Value = "印度尼西亚"'高级筛选Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("H1:H2"), unique:=False'清除临时条件区域Range("H1:H2").Clear
End Sub
单元格对象的AdvancedFilter(高级筛选)方法
使用按条件的高级筛选功能时,需要创建一个条件区域。因而本例使用VBA首先创建一个临时的条件区域,高级筛选执行完成之后,删除该区域。该使用临时辅助区域的方法在VBA开发中是经常用到的。AdvancedFilter(高级筛选)方法对应工作表中高级筛选的基本操作,其语法为
Rng.AdvancedFilter [Action ],[CriteriaRange],[CopyToRange],[Unique]
其中,Rng为进行高级筛选的区域,该区域为完整的数据区域。
- 参数Action为筛选的方式,xIFilterCopy表示将筛选结果复制到新区域,xIFilterInPlace表示在数据区域原地筛选。
- 参数CriteriaRange表示条件区域。
- 参数CopyToRange表示复制到的区域,该参数只有当Action参数设置为xIFilterCopy时才有效。
- 参数Unique表示是否筛选不重复的记录,当为True时,表示筛选不重复记录,为False时表示筛选所有满足条件的记录。
Excel 2010 VBA 入门 039 按条件隐藏数据行相关推荐
- Excel 2010 VBA 入门 037 获取最后一行数据的行数
目录 示例: 实现代码1 使用Find方法查找最后的单元格 Find方法按行查找和按列查找的区别 实现代码2 获取工作表总行数 实现代码3 单元格对象的End属性 End属性的局限性 其他获取最后数据 ...
- Excel 2010 VBA 入门 105 将工作表数据批量导出为图片
目录 示例 代码 Copy. Cut和Paste方法 图表对象(Chart)的Export方法 利用PPT导出图片 示例 为防止数据的更改或者盗用,将所选的数据区域导出为图片进行展示. 代码 在Exc ...
- Excel 2010 VBA 入门 034 创建图片批注
目录 批注(Comment)对象 批注的添加与删除 FiIIFormat对象 OnError语句 示例: 批注(Comment)对象 Comment对象是单元格的一个属性,表示单元格的批注.Comme ...
- Excel 2010 VBA 入门 130 利用窗体创建实时筛选浮动工具栏
目录 题 码 DefauIt和CanceI按钮 提高单元格隐藏的速度 自制浮动工具栏 动态显示与隐藏窗体 题 如图所示,该表为某单位员工档案.现希望制作一个包含有文本框的浮动工具栏,当在文本框中输入字 ...
- Excel 2010 VBA 入门 098 导入Access数据库的数据
示例 Access是微软Office组件的数据库软件,使用它可以进行简单的数据库软件的开发.但Access的图表功能和数据分析功能不如Excel强大,常用的做法可以将Access中的数据导入 Exce ...
- Excel 2010 VBA 入门 062 跨表数据查询
目录 示例 实现代码 跨表操作单元格 连续查找功能 示例 如图所示,该工作簿中建立"数据表"和"数据查询"表分别用于存储客户信息以及客户信息的查询.现希望在数据 ...
- Excel 2010 VBA 入门 063 跨表数据录入
目录 示例 实现代码 ListObject对象 ListObject对象的表示方法 1.序号表示法 2.名称表示法 ListColumn对象 向ListObject中添加新数据 使用VBA添加List ...
- Excel 2010 VBA 入门 001显示开发工具选项卡
目录 VBA简介 宏简介 显示"开发工具"选项卡 VBA简介 Visual Basic for Application (VBA)是Visual Basic的一种宏语言,是依附 ...
- Excel 2010 VBA 入门 086 数据处理之获取交叉查询结果表
目录 示例 代码 交叉汇总表 建立交叉汇总表的步骤 建立交叉汇总表的优化 示例 如图所示,该表为某公司的销售数据表.现希望建立一个汇总表,按月份和商品名汇总收入,并将月份作为列标题而商品名作为行标题. ...
最新文章
- (剑指Offer)面试题10:二进制中1的个数
- 【leetcode】1007. Minimum Domino Rotations For Equal Row
- C语言 二维数组复制、清零及打印显示
- A comparative study of various methods of bearing faults diagnosis using the CWRU data.-学习笔记
- linux配置ip地址 suse_suse linux中为单网卡配置多IP的方法
- html设置div页面最底,使用css让大图片不超过网页宽度
- luna16标签数据里的xyz,以及CT的dicom.ImagePositionPatient里的三个值分别代表哪些轴的初始点
- 烂泥:学习ssh之ssh密钥随身携带
- sqlplus 编辑的小技巧
- Jetpack来了:走近Google标准应用架构
- 《Java程序设计教程 实验手册》pdf 附下载链接
- RINEX 3.02 版本导航信息文件格式说明
- python api调用 验证码_Python语言调用创蓝253短信验证码API文档
- java类加载机制、类加载器、自定义类加载器
- android 键盘开发demo,Android自定义键盘之中文键盘demo
- Visual Basic 6.0编写简单网页浏览器
- unsupported_grant_type
- Flutter Web(一)新建项目和登录页
- [管理故事]:路遥知马力,日久见人心。
- PS快捷键大全 所有快捷键都在这里 新手必备