Excel VBAでセルを並べ替える:Sort

データのソーティングを自動化したいとき、Sortメソッドを使用すると便利です。今回はその使い方を紹介します。

Sortメソッドの使い方

構文は下記のとおりです。

object.Sort (
    [Key1] [, Order1] [, Key2] [, Order2] [, Key3] [, Order3] _
    [, Header] [, OrderCustom] [, MatchCase] [, Orientation] [, SortMethod] _
    [, DataOption1] [, DataOption2] [, DataOption3] )

引数が多いですが、1つずつ解説していきます。どれも省略可能です。

  • Object:Sortメソッドを使用したいオブジェクト全体を指定します。
  • Key1~3:並べ替えるフィールドを文字列またはRangeオブジェクトで、3つまで指定します。
  • Order1~3:「xlAscending」(昇順でソート)または、「xlDescending」(降順でソート)を選びます。省略した場合「xlAscending」となります。
  • Header:先頭の行をタイトル行とみなすかどうかを指定します。「xlGuess」なら自動判定、「xlYes」なら見なす、「xlNo」なら見なさないです。省略すると「xlNo」になります。
  • OrderCustom:ユーザー設定の並べ替え順のリストがある場合、その番号を指定します。省略するとデフォルトの設定になります。
  • MatchCase:大文字小文字を区別するかしないかを指定します。「True」なら区別する、「False」なら区別しないとなります。省略すると「False」になります。
  • Orientation:「xlSortColumns」(列単位で並び替え)か、「xlSortRows」(行単位で並び替え)かを選びます。省略すると、「xlSortRows」になります。
  • SortMethod:「xlPinYin」(日本語のふりがなの順で並び替え)または「xlStroke」(文字コードの順で並び替え)を指定します。省略すると、「xlPinYin」になります。
  • DataOption:「xlSortNormal」(文字列と数値を別に並び替える)「xlSortTextAsNumbers」(文字列と数値の区別なく並び替える)を指定します。省略すると、「xlSortNormal」になります。

使用例

こちらのデータを、いろいろな順番に並び替えていきます。

①名前順に並び替え

Sub Sort_test1()
    Range("A2:F17").Sort _
        Key1:=Range("A2"), _
     Order1:=xlAscending, _
     Header:=xlGuess, _
     SortMethod:=xlPinYin
End Sub

②年間売上高が低い順に並び替え

Sub Sort_test2()
    Range("A2:F17").Sort _ 
        Key1:=Range("F2"), _ 
        Order1:=xlDescending, _ 
        Header:=xlGuess 
End Sub


購読

平日・毎朝更新中