見出し画像

3つのキーによる並べ替え

 Excel VBAで3つのキーによる並べ替えを行うには、Sortオブジェクトを使用するのが一般的です。

 Sortオブジェクトを使用する方法は、以下のとおりです。

新しいSortオブジェクトを作成する
VBA
Dim sort As Sort
Set sort = Application.CreateObject("Excel.Sort")
コードは注意してご使用ください。

並び替えキーを設定する
VBA
With sort.SortFields
.Add Key:=Range("A1"), Order:=xlAscending '1つ目のキー:A列を昇順
.Add Key:=Range("B1"), Order:=xlDescending '2つ目のキー:B列を降順
.Add Key:=Range("C1"), Order:=xlAscending '3つ目のキー:C列を昇順
End With
コードは注意してご使用ください。

並べ替えるセル範囲を設定する
VBA
sort.SetRange Range("A1:C10") 'A1:C10の範囲を並べ替え対象とする
コードは注意してご使用ください。

並べ替えを実行する
VBA
sort.Apply
コードは注意してご使用ください。

 上記コードを実行すると、A列を昇順、B列を降順、C列を昇順の順に並べ替えられます。

 キーの並び替え順序や対象範囲を変更することで、様々な並び替えを行うことができます。

補足

 並べ替えを行う前に、ワークシートの保護を解除する必要があります。
 数式を含むセルを並び替える場合は、DataOption:=xlSortData を指定する必要があります。
 セルの書式設定に基づいて並び替える場合は、DataOption:=xlSortCells を指定する必要があります。

参考資料

【Excel VBA入門】Sortでセル範囲内をソートする(並び替える)方法 | 侍エンジニアブログ: https://www.sejuku.net/blog/category/programming-language/excel-vba
【VBA講座:4つ以上の列で並べ替えをする方法 - すごい改善 |: https://sugoikaizen.com/excelvba/3_123/
Excel VBA スタンダード・データの並べ替えについて: https://www.youtube.com/watch?v=oSF0KVWY7FY
【Excel VBA】SORTを使って、並び替えを行う方法 - ワークテリア(Workteria): https://m.youtube.com/watch?v=Qu542zr1cZ8

その他
 上記以外にも、3つのキーによる並べ替えを行う方法はいくつかあります。
 RangeオブジェクトのSortメソッドを使用する方法
ユーザー定義関数を作成する方法
 それぞれの方法にはメリットとデメリットがありますので、状況に合わせて最適な方法を選択してください。

この記事が気に入ったらサポートをしてみませんか?