快好知 kuaihz订阅观点

 

ExcelVBA多关键字排序

本文转载自公众号:VBA168,作者:两个聪。

多关键字排序

使用Range对象的Sort方法对区域进行排序时,同时最多只能指定3个关键字,当需要按照超过3个关键字对区域进行排序时,可以通过多次执行Sort方法实现。需要注意的是,在排序时应按照各关键字的倒叙顺序。例如,如果按照A→B→C→D的关键字顺序进行排序,则应按D→C→B→A的顺序执行Sort方法。

图1 带排序数据

如图1所示数据表中,需要按"总成绩"、"基础知识"、"教育学"和"心理学"的成绩降序排列,实例代码如下。

Sub SortByKeysA() With Range("A1") .Sort Key1:="心理学", order1:=xlDescending, Header:=xlYes .Sort Key1:="教育学", order1:=xlDescending, Header:=xlYes .Sort Key1:="基础知识", order1:=xlDescending, Header:=xlYes .Sort Key1:="总成绩", order1:=xlDescending, Header:=xlYes End With End Sub

运行以上过程,结果如图2所示。

图2 数据排序结果

使用Range对象的Sort方法对区域进行超过3个关键字排序时,需要多次执行Sort方法,而通过Worksheet对象的Sort方法则可以一次完成。如下示例代码实现与上面示例代码相同的排序功能。

Sub MoreKeySort()          With ActiveSheet.Sort.SortFields         .Clear         .Add Key:=Range("G1"), SortOn:=xlSortOnValues, Order:=xlDescending         .Add Key:=Range("B1"), SortOn:=xlSortOnValues, Order:=xlDescending         .Add Key:=Range("C1"), SortOn:=xlSortOnValues, Order:=xlDescending         .Add Key:=Range("D1"), SortOn:=xlSortOnValues, Order:=xlDescending     End With     With ActiveSheet.Sort         .SetRange Range("A1").CurrentRegion         .Header = xlYes         .Apply     End With End Sub

第3行代码清除工作表所有的SortFields对象

第4~7行分别在Sort对象中添加SortFields对象。SortFields对象的Add方法创建新的排序字段,并返回SortFields对象,其语法格式如下。

Add(Key, SortOn, Order, CustomOrder, DataOption)

该方法的各参数分别对应于Range对象Sort方法的参数。

第10行代码指定Sort对象排序区域。

第11行代码指定排序区域包含标题。

第12行代码应用工作表排序

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:ExcelVBA多关键字排序  排序  排序词条  ExcelVBA  ExcelVBA词条  关键字  关键字词条  
办公

 5个办公常用的Word排版技巧,...

大家在办公的时候是不是经常会用到Word呢?Word其实说难也不难,但是说简单也不简单,关键就是只要你会用,就会变得非常简单,我发现很多人都是在排版上面吃亏,那...(展开)

办公

 办公不求人122 Excel办公...

很多电脑使用者在编写Excel文件后,由于涉及到一些数据或隐私,不想让他人打开或是打开后不能修改,这就需要设置一下密码保护了,在此,我们为大家分享Excel文件...(展开)