VBA常⽤⼩代码:Rang对象的排序操作
这年头,⼩屁孩都寄道数据排序是数据处理过程中⾮常重要的⼀个环节,Excel也直接提供了【排序】的基础功
能,VBA代码与之相对应的,便是Rang对象的Sort⽅法。
举个栗⼦。如下图所⽰,需要对B列的语⽂成绩,按升序排列。
代码如下:
vba排序函数sort用法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&
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常⽤的排序算法由冒泡排序、桶排序、快速排序等~
……拥抱,致安,轻轻说……I……

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。