打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA操作Excel内容排序,用Sort函数对工作表内容排序

关于大批量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行【也参与排序】

  带参数名引用时:

  OrderCustom”表明进行自定义排序,同时“OrderCustom”参数的值指明用哪个自定义序列排序;“排序选项”对话框中可以看出,默认的排序方法为“普通”,即当省略OrderCustom参数或指定其值为1时,则按“普通”(即非自定义序列)方法排序。当使用自定义排序时,将“OrderCustom”参数设置为指定的序列在自定义列表中的顺序加1即可。如自定义序列“一月,二月……,十二月”在下图中的位置为8,如果要用该自定义序列排序,则需指定OrderCustom的值为8。

④ 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:= xlSortNorma

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
跟烟花入门VBA之81:单元格对象Range(二十五)
VFP控制Excel排序
VBA经验小结
Excel VBA解读(54):排序——Sort方法
EXCEL VBA 排序_小糊涂
Excel VBA教程:SortSpecial方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服