本文转载自公众号: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方法则可以一次完成。如下示例代码实现与上面示例代码相同的排序功能。
第3行代码清除工作表所有的SortFields对象。 第4~7行分别在Sort对象中添加SortFields对象。SortFields对象的Add方法创建新的排序字段,并返回SortFields对象,其语法格式如下。
该方法的各参数分别对应于Range对象Sort方法的参数。 第10行代码指定Sort对象的排序区域。 第11行代码指定排序区域包含标题。 第12行代码应用工作表排序。 |
|