表中数据的排序及数据的筛选(表中数据的排序及数据的筛选方法)

boyanx5天前技术教程3

分享成果,随喜正能量】若不以心生心,则心心入空,念念归静,从一佛国至一佛国。若以心生心,则心心不静,念念归动,从一地狱历一地狱。。

《VBA高级应用30例》(10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中分发VBA程序,写好的程序可以升级。本套教程共三册三十个专题,今日内容是第3个专题“在Excel中的ListObject对象”,今日讲解:表中数据的排序及数据的筛选


应用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实践经验,全部浓缩在下面的各个教程中:

分享成果,随喜正能量】 若一念心起,则有善恶二业,有天堂地狱;若一念心不起,即无善恶二业,亦无天堂地狱。。

标签: table.sort

相关文章

Oracle数据库中查询最前面的100条数据,三种方法对比

在Oracle数据库中查询最前面的100条数据,可通过多种方法实现,不同方法适用于不同场景和版本。以下是基于当前技术文档的三种核心方案及其适用性分析:一、使用 ROWNUM 伪列(通用方案,全版本适用...

Record.ToTable 求多列之间的差异

本期案例是对相同性质的列(字段名中字母一样的为同性质列)进行比较,如果行内对应的两列数据不一样,则在差异列中显示对应的列名名称,否则不显示。前后转换效果如下:解题套路1.Record.ToTable解...

Record.ToTable 格式转换(record format)

本期案例对表格格式进行转换,前后转换效果如下:解题套路1.Record.ToTable解题思路:思路就是构造可以透视的样式。使用Record.ToTable对行记录进行转换,获得包含两列的表,首行可以...

Excel Power Query 按三个以上的条件依次排序,不好办啊

前一篇教程我分享了在 Power Query 中如何按两个条件排序,有同学提问:如果要排序条件达到三个以上呢?在设置上的有没有可参照格式?那今天就给大家教一下升级版,学会了三条件排序,后面就可以举一反...

Python-推荐3个命令行上进行字符可视化输出的方法

在实际的Python编程中,经常需要控制台命令行应用程序,他们不需要GUI界面,使用控制台终端和用户进行交互,但在命令行中也可以进行一些有趣的输出。1打印表情符号Unicode组织的表情官网(unic...

PyTorch 源码解读之 torch.autograd:梯度计算详解

前言本篇笔记以介绍 pytorch 中的 autograd 模块功能为主,主要涉及 torch/autograd 下代码,不涉及底层的 C++ 实现。本文涉及的源码以 PyTorch 1.7 为准。t...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。