Excel VBA学习笔记:工作表中数据排序,Sort方法

在工作表中经常会对一个区域的数据进行排序 , VBA代码如何实现这样的操作呢?VBA里直接提供了Sort方法,语法range().Sort “参数”;range()代表单元格区域,参数如图:

Excel VBA学习笔记:工作表中数据排序,Sort方法

参数描述:Key1,Order1,Key2,Type,Order2,Key3,Order3,Header,Ordercustom,MatchCase,Orientation,SortMethod,DataOption1,DataOption2,DataOption3
先举几个简单的示例:
Excel VBA学习笔记:工作表中数据排序,Sort方法

Range(“a2:d11”).Sort range(“b2”),Order1:=2,Header:=2
语句释义:range(“a2:d11”)是要参与排序的数据区域;Sort后面有个空格(VBA的提示中有括号,实际不需要,文尾会写原因),然后接参数 。第1参数Key1为range(“b2”),表示按“B列”排序的关键字(这里B3,B4都可以,只要在数据区域内),作用等同于下图的“列D" 。
Excel VBA学习笔记:工作表中数据排序,Sort方法

Order1:=2表示降序(英文全写xlDescending),省略不写的话默认为升序,就是上图中的"次序";Order的值 为xlAscending 表示”升序“(数字简写 1),几个Order是一样的 。
Type 参数是仅用于数据透视表排序,值为:xlSortLables或xlSortValues 。
Header 用来表示是否存在表头 。Header:=2表示没有表头(英文全写xlNo) , 1 值为有表头(英文全写xlYes),0 值表示让系统自己判断(英文全写xlGuess) 。此参数省略不写的话默认为让系统自己判断 。注:示例语句在Header前面只有一个逗号,许多介绍中此处没有写Header,但是前面有多个逗号 。这是两种写法 , 写了Header:=2 不用管header位于参数第几位;不写”Header:=“ 就需要用","标注出这是第几参数
Range(“a2:d11”).Sort range(“b2”),2,,, , ,,2'这种写法需要相当熟悉参数
如果有两个关键字,语句为:
Range(“a2:d11”).Sort Range("d2"), order1:=2, key2:=Range("c2"),order2:=2,Header:=2
Sort 最多支持3个关键字,只有Key3 没有Key4 。
MatchCase参数 表示是否区分字母的大小写 。True 区分大小写,False 不区分 。
Orientation参数,指定数据排序的方向性 。默认是按列排序,就是数据是在列方向上按指定顺序排列;参数值 xlSortColumns(或xlToptoBottom)按列排序 。参数值为xlSortRows(或xlLefttoRight) 将按行排序 。
SortMethod参数,中文排序时可用;xlPinin 按拼音排序;xlStroke 按笔画排序(此参数可能有的Excel版本无效)
DataOption1参数,用于指定对于Key1所指区域中的文本型数字如何排序 。就是排序的区域中有数字又有文本时,是按文本方式排序,还是按数字方式排序 。如图:
Excel VBA学习笔记:工作表中数据排序,Sort方法

默认按文本排就是上面左图的顺序(等同于DataOption1=xlSortNormal),如果DataOption1:=xlSortTextAsNumbers,就是上面右图的顺序 。DataOption2,DataOption3指的是Key2与Key3的区域的排序方式 。
Ordercustom参数,值为数字 , 指的是”自定义排序的序列“ 。Ordercustom=2,就是Sun,Mon这个自定义的序列;8,就是”一月,二月“这个序列;一行一个序列 。注:Ordercustom=1,为不使用自定义序列 。
Excel VBA学习笔记:工作表中数据排序,Sort方法

注:仅使用排序功能,Rng().Sort后不要跟括号,因为.Sort后面用括号,会被视为"函数",会提示要赋值给变量 。
【Excel VBA学习笔记:工作表中数据排序,Sort方法】工作表的Sort方法:Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("C3:C23"),SortOn:=xlSortonCellColor,Order:=xlAscending;SortOn:=xlSortonCellColor 以单元格颜色排序 。

相关经验推荐