微优网Excel攻略板块,专业的Excel攻略站!

|返回首页|网站地图|

当前位置:首页office攻略Excel攻略→VBA常用小代码:Rang对象的排序操作

VBA常用小代码:Rang对象的排序操作

时间:2020-07-17人气:137作者:微优网Excel攻略

这年头,小屁孩都寄道数据排序是数据处理过程中非常重要的一个环节,Excel也直接提供了【排序】的基础功能,VBA代码与之相对应的,便是Rang对象的Sort方法。

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

代码如下:

Sub SortDemo()

    Range("A:B").Sort key1:=[b1], order1:=xlDescending, Header:=xlYes

End 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

Next

End Sub


小贴士:

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

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

3,除了使用Rang对象进行排序操作,也可以使用WorkSheet对象的Sort方法,该方法并没有3个关键字的上限;另外,也可以使用数组搭配“算法”,Excel VBA常用的排序算法由冒泡排序、桶排序、快速排序等~

相关攻略

  • 给Excel安装监控,专治不按要求填数据

    今天老祝要和大家一起学习一个非常简单,但是十分实用的小技巧。 在下图的员工信息表中,要求各个记录必须是连续输入的,如果输入的不完整或是输入后又删除了记录, Excel 就不..
  • Excel插件:快速制作属于自己Excel插件

    Excel插件:快速制作属于 自己的 插件,建立批量操作工具箱! 工作中处理工作表时常常会遇到一些比较复杂的问题,相信大家都遇到过,比如一键创建工作表目录链接、一键拆分工作..

Copyright 2019-2022 www.vyyoo.com 【微优网】 版权所有

声明:本站部分文章来自互联网 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助和广告