この記事では、VBAでの並べ替え処理に使用する、Sortメソッド、Sortオブジェクトの使用方法を解説します。
基本構文から、引数の設定方法などの記述方法を解説します。
VBA関連解説
Excelの並べ替え機能
エクセルで並べ替えするときは、並べ替え機能を使用する方法とオートフィルターの並べ替え機能を使用する方法があります。
Sortメソッドは、Excelの並べ替え機能を再現したものともいえます。
Excelの並べ替え機能はデータタブの並べ替えとフィルターにある、並び替えボタンで始めます。
並べ替えボタンをクリックすると、並べ替えのダイアログボックスが表示されます。
VBAでは、並べ替え機能が、Sortメソッドで再現できます。
Excelのオートフィルターはデータタブの並べ替えとフィルターにある、フィルターボタンで設定できます。
フィルターボタンをクリックすると、リストのヘッダー部に矢印ボタンが表示されます。
矢印ボタンをクリックすると、オートフィルター機能が使用できます。
VBAでは、これらのオートフィルター機能のうち並べ替えに関する機能が、Sortオブジェクトで再現できます。
Sort メソッドの構文
VBAでは、セルの並べ替えにSortメソッドがよく使用されます。
基本構文
Sortメソッドは、セル範囲内の指定列を並べ替えします。
Sort 構文
Range("A1").Sort Key1, Order1, Key2, Order2, Key3, Order3, Header, MatchCase, Orientation, SortMethod
引数の設定は下表のようになります。
Sort 引数
使用方法
使用方法については、下記サンプルを実際に処理した結果とともに解説します。
並べ替えサンプル
Sort 例
Sub Sort_METHOD() Range("A1").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlYes End Sub
並べ替え結果
上記コードは、Sortメソッドを使用して並べ替えをする、最もシンプルな例です。
Sort オブジェクトの構文
Excel2007以降では、セルの並べ替えにSortオブジェクトを使用できるようになりました。
基本構文
Sortオブジェクトは、セル範囲内の指定列を並べ替えします。
Sort 構文
With Sheets(1).Sort .SortFields.Clear .SortFields.Add Key, SortOn, Order, DataOption .SetRange .Header .MatchCase .Orientation .SortMethod .Apply End With
構文は、前半のSortFieldsオブジェクトのAddメソッドで並べ替えの条件を設定し、後半にSortオブジェクトのプロパティで並べ替えの挙動を設定します。
引数の設定は下表のようになります。
SortFields.Add 引数
Sort プロパティ
使用方法
Sort 例
Sub Sort_OBJECT() With Sheets(1).Sort .SortFields.Clear .SortFields.Add Key:=Range("B1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SetRange Range("A1:B7") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub
上記コードは、Sortプロパティを使用して並べ替えをする、最もシンプルな例です。
コードの可読性
Excel2007以降では、セルの並べ替えにSortオブジェクトを使用できるようになりました。
Sortメソッドとの違いは、指定できるキーが3個から64個に増えたことと、色やアイコンでの並べ替えができるようになったことです。
ただし、コードが長くなり、可読性が悪くなっていますので、単純に並べ替えるだけであれば、Sortメソッドを使用するのがいいでしょう。
また、複数のキーを指定すると、これもコードが長くなり、可読性が悪くなっていますので、下記のように記述すると、設定できるキーの個数も気にせず可読性も良くなります。
Sub Sort_複数キー() Range("A1").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlYes Range("A1").Sort Key1:=Range("C1"), Order1:=xlDescending, Header:=xlYes Range("A1").Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlYes End Sub
検索・抽出・並び替え
VBAでExcelシートをデータベース的に使用するときには、検索・抽出・並び替えの各機能の使用が必要となってきます。
この記事では、並び替え機能に使用する Sort メソッド・Sort オブジェクトについて解説しました。
下記の記事では、Find メソッドを使用した検索機能について解説しています。
下記の記事では、AutoFilter メソッドを使用した抽出機能について解説しています。
概要解説に戻る