如何在表中按年份筛选数据(表中数据的排序及数据的筛选)
如何在表中按年份筛选数据(表中数据的排序及数据的筛选)数据类型必需/可选语法:expression.Add (Key SortOn Order CustomOrder DataOption)各个参数的意义:名称
【分享成果,随喜正能量】若不以心生心,则心心入空,念念归静,从一佛国至一佛国。若以心生心,则心心不静,念念归动,从一地狱历一地狱。。
《VBA高级应用30例》(10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中分发VBA程序,写好的程序可以升级。本套教程共三册三十个专题,今日内容是第3个专题“在Excel中的ListObject对象”,今日讲解:表中数据的排序及数据的筛选
在VBA中,表(Tables)的应用还是较普遍的,它们被称为ListObjects,这是Excel 2003引入的一个集合。但是对象模型的这一部分有很大的变化,我在这个专题简单给大家讲解一下应用,包括创建及一些格式操作。
7 表中数据的排序及数据的筛选对于表,我们可以得到一组全新的筛选和排序选项。这里我只展示了一小部分,单元格颜色的排序和单元格大小的排序,以及字体颜色的过滤器。
- SortFields.Add 方法:创建新的排序字段,并返回一个 SortFields 对象。
语法:expression.Add (Key SortOn Order CustomOrder DataOption)
各个参数的意义:
名称 |
必需/可选 |
数据类型 |
说明 |
Key |
必需 |
Range |
指定用于排序的键值。 |
SortOn |
可选 |
Variant |
要进行排序的字段。 |
Order |
可选 |
Variant |
指定排序次序。 |
CustomOrder |
可选 |
Variant |
指定是否应使用自定义排序次序。 |
DataOption |
可选 |
Variant |
指定数据选项。 |
- SortField.SortOn 属性 :返回或设置要排序的单元格的属性。 可读/写 XlSortOn 。
语法:expression.SortOn
枚举值:
名称 |
值 |
说明 |
SortOnCellColor |
1 |
单元格颜色。 |
SortOnFontColor |
2 |
字体颜色。 |
SortOnIcon |
3 |
图标。 |
SortOnValues |
0 |
值。 |
以上我们简单地介绍了在排序及筛选中需要用到的知识点,下面我们看一下代码。在工作表中我预先插入了一个表格,这个表格将用于我下面的一系列的代码,为了大家测试方便,我同时在后边给出了备份的表格及数据,大家可以复制及粘贴应用。如下:
1)首先,利用代码实现按照单元格颜色的排序:
Sub mynzTableColorSorting()
With ActiveWorkbook.Worksheets("Sheet2").ListObjects("mynzTable")
.Sort.SortFields.Clear
'note:有的版本为Column2
.Sort.SortFields.Add _
Range("mynzTable[[#All] [列2]]") xlSortOnCellColor xlAscending _
xlSortNormal
With .Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub
代码讲解:上述代码实现了工作表中"mynzTable"表按照第2列的升序排列,特别要注意代码中的注解,"mynzTable[[#All] [列2]]" 在有的版本上写作Column2(我用的是2019版office,确实不清楚为何在此引入了中文元素,或许只是汉化过程吧。和高压送电操作系统,航天操作系统中相比,诚然,这也是必须的)。
代码的运行结果:
2)利用代码实现按照单元格数值的排序:
Sub mynzTableNumSorting()
ActiveWorkbook.Worksheets("Sheet2").ListObjects("mynzTable").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet2").ListObjects("mynzTable").Sort.SortFields.Add _
Key:=Range("mynzTable[[#All] [列1]]") _
SortOn:=xlSortOnValues _
Order:=xlAscending _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet2").ListObjects("mynzTable").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
代码截图:
代码的实现效果:
3)实现按照颜色进行筛选
Sub mynzTableFiltering()
ActiveSheet.ListObjects("mynzTable").Range.AutoFilter Field:=7 _
Criteria1:=RGB(255 0 0) Operator:=xlFilterFontColor
End Sub
代码截图:
代码的讲解:上述代码实现了表"mynzTable"中按照第7列,对红色字体的数据进行筛选。
代码的实现效果:
[待续]
- 本讲内容参考程序文件:高级应用03.xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
【分享成果,随喜正能量】 若一念心起,则有善恶二业,有天堂地狱;若一念心不起,即无善恶二业,亦无天堂地狱。。