VBA操作Excel内容排序,用Sort函数对工作表内容排序
今天有同学问到关于大批量Excel的Sheet如何简化排序,但是网上的攻略比较混乱。因此,在这做一下示例。需求:80页sheet的Excel文档,每页的格式相同,基本内容如下,要求根据A列,升序排列。代码如下:Option ExplicitSub MySort()Dim i As IntegerDim maxRow As IntegerDim sht As Workshe...
·
今天有同学问到关于大批量Excel的Sheet如何简化排序,但是网上的攻略比较混乱。因此,在这做一下示例。
需求:80页sheet的Excel文档,每页的格式相同,基本内容如下,要求根据A列,升序排列。
代码如下:
Option Explicit
Sub MySort()
Dim i As Integer
Dim maxRow As Integer
Dim sht As Worksheet
'遍历所有工作表
For i = 1 To ActiveWorkbook.Worksheets.Count
Set sht = ActiveWorkbook.Worksheets(i)
'激活当前工作表,Sort只能排序当前工作表
sht.Activate
'获取当前表最大行数
maxRow = sht.UsedRange.Rows.Count
'选取范围进行排序:这里是选取a3:ao41(前两行因为是标题,所以不选);key是排序的列,这里写a3,表示以a列为依据排序,最多可以写3个key;order表示升序降序;Header表示是否有标题,由于我们没选a1、a2,所以这里写no
sht.Range("a3:ao" & maxRow).Sort key1:=sht.Range("a3"), order1:=xlAscending, Header:=xlNo
Next i
End Sub
注意,Vba的排序函数为Sort,基本用法如下:
Range("待排序数据区域").Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3,
Header, OrderCustom, MatchCase, Orientation, SortMethod,
DataOption1, DataOption2, DataOption3)
其中各类型参数的意义如下:
① key1、key2、key3
这些key是排序的关键列(或行)的单元格地址,如 Range("A1")
实际只要选对列标题即可,对行数要求不敏感。
【行数要求不敏感】
即数据区域中任意行数都可以: Range("A1")、或Range("A2")、或Range("A1000")都可以。
【注意】
1. 一次Sort只能调用至多3个参数,没有key4可以使用。
2. 至少使用1个参数即可,即key2、key3可以省去不用。
【引用方法】
1. 带参数名引用,如: key1:=Range("G3")
带参数名引用时
2. 参数位置引用,即按照上述Sort命令的参数顺序直接应用,
如: Range("A1:I19").Sort key1:=Range("G3") 即第1位置参数即为key1
② Order1、Order2、Order3
这些Order是排序的顺序模式指定参数。即: A-Z升序、或Z-A降序
参数的模式名称为:
A-Z升序= xlAscending 或直接=1
Z-A降序= xlDescending 或直接=2
带参数名引用时:
Order1:=xlAscending 或 Order1:= 1
参数位置引用时,紧跟key后面。(但注意key2和Order2之间要隔一个Type参数)
③ Header
即是否有标题行参数,一共有3个值:
Header:= xlGuess=0 或xlYes=1 或 xlNo=2
即=xlGuess、或=0时,工作表自己判断
=xlYes、或=1时,强制第1行为列标题,即第1行【不参与排序】
=xlNo、或=2时,强制没有列标题。即第1行【也参与排序】
带参数名引用时:
如: Header:= xlGuess
参数位置引用时,在第7个逗号之后。
(如果key只有1个时,要连续空6个逗号,
如:Range("A1:I19").Sort Range("A1"), 1, , , , , , 2 (order1之后连续写6个逗号)
④ MatchCase 是否匹配大小写
MatchCase:=False 、或=0 不区分大小写
MatchCase:=True 、或=1 区分大小写(Case Sensitive)
⑤ Orientation 排序方向
一般为同一列中从上到下各行进行排序:Orientation:= xlTopToBottom 、或=1
如果是: 同一行中从左到右各列进行排序,则为:Orientation:= xlLeftToRight、或=2
⑥ SortMethod 排序方法
按拼音排序: SortMethod:= xlPinYin 、或=1 (Use phonetic info)
按笔画排序: SortMethod:= xlStroke、或=2
⑦ DataOption1 按数值或按文本排序
DataOption1:= xlSortNormal
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)