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行【也參與排序】
  帶參數名引用時:
   如: 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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章