打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何使用VBA代码对表格中的数据排序处理?
广告

Excel VBA经典代码应用大全 ExcelHome出品 一键搞定函数 报表数据分析数据可视化

作者:Excel Home

当当
 
HI,大家好,我还是星光,今晚我们聊Rang对象的“排序”……
数据排序是数据处理过程中非常重要的一个环节,Excel也直接提供了【排序】的基础功能,VBA代码与之相对应的,便是Rang对象的Sort方法。

举个栗子。如下图所示,需要对B列的语文成绩,按升序排列。


代码如下▼

代码解析见注释
如看不全,可以左右拖动...

Sub SortDemo()    Range('A:B').Sort key1:=[b1], order1:=xlDescending, Header:=xlYesEnd Sub

Sort的语法如下▼

expression.Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)

看起来略复杂……但最常用的其实只有三个部分。

举参数Key1、Key2、Key3都是可选的,分别指定第一、二、三排序字段,作为区域名称或Rang对象,比如此例中的[b1],确定要排序的值。
参数Order1、Order2、Order3可选,分别对应Key1、2、3的排序次数。其中xlAscending为升序排列(默认值),xlDescending为降序排列。

参数Header可选,指定第一个行是否包含标题行。常用的有两个值,lNo为不包含标题行(默认值),xlYes为包含标题行。

这里需要说明的是,Rang对象的Sort方法一次最多可以指定3个排序字段……当排序字段超过3个时,通常执行多次Sort方法进行处理。

再举个栗子(最近炒栗子吃过了……)如下图所示,需要分别按照总分、语文、数学、英语的成绩降序排序。


代码如下▼

代码解析见注释
如看不全,可以左右拖动...
Sub SortDemo()    Dim i&    For i = 5 To 2 Step -1    '一共4个排序字段,分别处于b1:e1单元格,从后向前遍历排序        Range('a:e').Sort key1:=Cells(1, i), order1:=xlDescending, Header:=xlYes    NextEnd Sub

小贴士▼

▶ 进行多次单元格对象的Sort排序时,操作字段的次序和排序目的是反过来的,也就是说优先排序级别越高的字段,总是放在最后进行排序。例如该例中的总分、语文、数学和英语,代码遍历操作是英语、数学、语文和总分。

▶ 为了减少排序动作的次数,提高代码运算效率,除了可以屏蔽屏幕更新(Application.ScreenUpdating = False),也可以尽可能的在每次排序过程中指定多个字段,而非一个字段。

▶ 除了使用Rang对象进行排序操作,也可以使用WorkSheet对象的Sort方法,该方法并没有3个关键字的上限;另外,也可以使用数组构建算法,Excel VBA常用的排序算法由冒泡排序、桶排序、快速排序等,我们后期会陆续聊到~~

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel VBA数据排序
VBA: 使用Sort方法进行排序
学习VBA,报表做到飞 第一章 入门篇 1.16 Sort语句
Excel之VBA常用功能应用篇:工作表排序方法,Sort对象实战代码
Excel VBA教程:SortSpecial方法
Excel VBA中使用工作表排序的方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服