データ範囲を並べ替えするにはSortメソッドを使用します。ExcelVBAでデータ操作をする上では頻繁に使用する内容となりますので、是非理解してもらいたいと思います。また、今回はExcel2003までの並べ替え方法について紹介します。
構文
記述方法は以下の通りとなります。
Range(”[セルの範囲]”).Sort _
Key1:=Range(”[KEY①]”), Order1:=[並べ替え方法①], _
Key2:=Range(”[KEY②]”), Order2:=[並べ替え方法②], _
Key3:=Range(”[KEY③]”), Order3:=[並べ替え方法③]
[説明]:
セル範囲内を並べ替えするには
「Range(”[セルの範囲]”).Sort _
Key1:=Range(”[KEY①]”), Order1:=[並べ替え方法], _
Key2:=Range(”[KEY②]”), Order2:=[並べ替え方法], _
Key3:=Range(”[KEY③]”), Order3:=[並べ替え方法]」
と記述します。
[セル範囲] | 並べ替えをしたいセル範囲を記述します。 ※「”」(ダブルクォーテーション)で囲みます。 |
[KEY①] [KEY②] [KEY③] |
並べ替え列を記述します。 ※「”」(ダブルクォーテーション)で囲みます。 |
[並べ替え方法] |
並べ替え方法を記述します。 |
[記述例]:
Range("A1:C5").Sort _
Key1:=Range("A1"), Order1:=xlAscending, _
Key2:=Range("B1"), Order2:=xlAscending, _
Key3:=Range("C1"), Order3:=xlAscending
Range("A1:C5").Sort _
Key1:=Range("A1"), Order1:=xlDescending, _
Key2:=Range("B1"), Order2:=xlDescending, _
Key3:=Range("C1"), Order3:=xlDescending
Range("A1:C5").Sort _
Key1:=Range("A1"), Order1:=xlAscending, _
Key2:=Range("B1"), Order2:=xlDescending, _
Key3:=Range("C1"), Order3:=xlAscending
使い方
使い方について具体的に説明します。
並べ替え(昇順)
以下のサンプルを元に、並べ替え(昇順)について説明します。
[サンプル]:
[プログラミング例]:
Sub サンプル()
Range("A1:C5").Sort _
Key1:=Range("A1"), Order1:=xlAscending, _
Key2:=Range("B1"), Order2:=xlAscending, _
Key3:=Range("C1"), Order3:=xlAscending
End Sub
内容は、「A1セル~C5セルの範囲を、最初にA1セルをキーとして昇順に並べ替え、次にB1セルをキーに昇順に並べ替え、最後にC1セルをキーに昇順に並べ替えして下さい。」との意味になります。
※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。
[実行例]:
①A1セル~C5セルにデータが入力されています。このデータをA列>B列>C列の順で昇順での並べ替えを行います。並べ替えを行うため<実行>ボタンをクリックします。このボタンには上記のプログラミング例のプログラムが登録されています。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)
②結果は以下の様になります。A列>B列>C列の順で昇順の並べ替えがされました。
[サンプル]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
並べ替え(昇順)についての説明は以上です。
並べ替え(降順)
以下のサンプルを元に、並べ替え(降順)について説明します。
[サンプル]:
[プログラミング例]:
Sub サンプル()
Range("A1:C5").Sort _
Key1:=Range("A1"), Order1:=xlDescending, _
Key2:=Range("B1"), Order2:=xlDescending, _
Key3:=Range("C1"), Order3:=xlDescending
End Sub
内容は、「A1セル~C5セルの範囲を、最初にA1セルをキーとして降順に並べ替え、次にB1セルをキーに降順に並べ替え、最後にC1セルをキーに降順に並べ替えして下さい。」との意味になります。
※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。
[実行例]:
①A1セル~C5セルにデータが入力されています。このデータをA列>B列>C列の順で降順での並べ替えを行います。並べ替えを行うため<実行>ボタンをクリックします。このボタンには上記のプログラミング例のプログラムが登録されています。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)
②結果は以下の様になります。A列>B列>C列の順で降順の並べ替えがされました。
[サンプル]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
並べ替え(降順)についての説明は以上です。
並べ替え(昇順・降順混在)
以下のサンプルを元に、並べ替え(昇順・降順混在)について説明します。
[サンプル]:
[プログラミング例]:
Sub サンプル()
Range("A1:C5").Sort _
Key1:=Range("A1"), Order1:=xlAscending, _
Key2:=Range("B1"), Order2:=xlDescending, _
Key3:=Range("C1"), Order3:=xlAscending
End Sub
内容は、「A1セル~C5セルの範囲を、最初にA1セルをキーとして昇順に並べ替え、次にB1セルをキーに降順に並べ替え、最後にC1セルをキーに昇順に並べ替えして下さい。」との意味になります。
※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。
[実行例]:
①A1セル~C5セルにデータが入力されています。このデータのA列を昇順で並べ替え、B列を降順で並べ替え、C列を昇順で並べ替えを行います。並べ替えを行うため<実行>ボタンをクリックします。このボタンには上記のプログラミング例のプログラムが登録されています。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)
②結果は以下の様になります。A列を昇順で並べ替え、B列を降順で並べ替え、C列を昇順で並べ替えがされました。
[サンプル]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
並べ替え(昇順・降順混在)についての説明は以上です。
おわりに
並べ替えはデータを扱う上では必須の作業となります。今回の説明内容を有効に活用して頂き、是非業務効率向上に役立ててもらえればと思います。また、類似の内容としてExcel2007以降の並べ替え方法もあります。こちらも参考にして下さい。