Excel VBAでデータを並び変える(ソート)
Excelで作業を自動化するためには、頻繁に行うデータの並べ替えもVBAを使ってプログラミングする必要があります。今回は3つのデータ項目を並び替えるサンプルアプリを紹介します。
データの並べ替えは、値による昇順・降順や列方向・行方向の並べ替えだけでなく、セルの色やフォントの色さらには大文字・小文字などあらゆる角度から並べ替えを行うことができます。
データを並び替えるサンプルアプリの説明
赤枠の「並べ替え(ソート)実行」ボタンを押すと、表の項目1~項目3の優先順位でデータが並べ替えられます。

サンプルアプリのソースコード コードの作成手順はこちら
Sub ボタン1_Click()
'Sortプロパティを使用してSortオブジェクトを取得し、Withステートメントで指定します。
With ActiveSheet '対象シートをアクティブにする
'SortFieldsコレクションのClearメソッドで前回の並べ替えの設定をクリアします。
.Sort.SortFields.Clear
'SortFieldsコレクションのAddメソッドで並び替え対象を指定します。並び替えの優先順位が高い順から宣言します。
'項目1
.Sort.SortFields.Add _
Key:=ActiveSheet.Cells(5, 2), _
SortOn:=xlSortOnValues, _
Order:=xlAscending, _
DataOption:=xlSortNormal
'項目2
.Sort.SortFields.Add _
Key:=ActiveSheet.Cells(5, 3), _
SortOn:=xlSortOnValues, _
Order:=xlAscending, _
DataOption:=xlSortNormal
'項目3
.Sort.SortFields.Add _
Key:=ActiveSheet.Cells(5, 4), _
SortOn:=xlSortOnValues, _
Order:=xlAscending, _
DataOption:=xlSortNormal
With .Sort '並び替えを実行する
'SortオブジェクトのSetRangeメソッドに並べ替えるセル範囲を指定します。
.SetRange Range(Cells(5, 2), Cells(17, 4))
'SortオブジェクトのHeaderプロパティに1行目を見出し行として設定する「xlYes」を指定します。
.Header = xlYes
'大文字と小文字を区別するかしないかを指定します。「False」を指定し区別をしないように設定します。
.MatchCase = False
'行方向(上から下)の並べ替えを指定します。
.Orientation = xlTopToBottom
'ふりがな順に並べ替えます。
.SortMethod = xlPinYin
'SortオブジェクトのApplyメソッドで並べ替えを実行します。
.Apply
End With
End With
End Sub
SortFields.Addメソッドの説明
SortFields.Addメソッドの引数を設定することによりソートの列や方法を指定することができます。
オブジェクト.Add( Key, [SortOn, Order, CustomOrder, DataOption] )
●Key【キー】(必須)
並べ替えの基準とするフィールド(列)のセルまたは列をRangeオブジェクトで指定します。
●SortOn【ソートオン】(省略可)
並べ替えの基準をXlSortOn列挙型の定数で指定します。
SortOnValues 0 値(既定値)
SortOnCellColor 1 セルの色
SortOnFontColor 2 フォントの色
SortOnIcon 3 アイコン
●Order【オーダー】(省略可)
並べ替えの順序をXlSortOrder列挙型の定数で指定します。
xlAscending 1 昇順で並べ替えます。(既定値)
xlDescending 2 降順で並べ替えます。
●CustomOrder【カスタムオーダー】(省略可)
ユーザー定義の並べ替えの順番を文字列で指定するか「ユーザー設定リスト」ダイアログボックスのリスト上からの順番を数値で指定します。
●DataOption【データオプション】(省略可)
テキストを並べ替える方法をXlSortDataOption列挙型の定数で指定します。
xlSortNormal(既定値) 0 数値データとテキスト データを別々に並べ替えます。
xlSortTextAsNumbers 1 テキストを数値データとして並べ替えます。
Sort オブジェクトのメソッドとプロパティ
●SetRange【セットレンジ】メソッド
並べ替えるセル範囲をRangeオブジェクトで指定します。
●Header【ヘッダー】プロパティ
指定範囲の1行目を見出しとするかどうかをXlYesNoGuess列挙型の定数で設定します。値の設定と取得ができます。
xlGuess 0 見出しがあるかどうか Excel が判断します。
xlYes 1 1行目を見出しとして1行目を除いた指定範囲を並べ替えます。
●MatchCase【マッチケース】プロパティ
大文字と小文字を区別するかしないかを指定します。値の設定と取得ができます。
False 区別しない(既定値)
True 区別する
●Orientation【オリエンティーション】プロパティ
並べ替えの単位をXlSortOrientation列挙型の定数で指定します。値の設定と取得ができます。
xlTopToBottom または xlSortColumns 1 既定値。行方向(上から下)の並べ替えになります
xlLeftToRight または xlSortRows 2 列方向(左から右)の並べ替えになります
●SortMethod【ソートメソッド】プロパティ
日本語の並べ替えの方法をXlSortMethod列挙型の定数で指定します。値の設定と取得ができます。
xlPinYin 1 ふりがな順に並べ替え(既定値)
xlStroke 2 各文字の総画数で並べ替え
●Apply【アプリ】メソッド
並べ替えを実行します。
ディスカッション
コメント一覧
まだ、コメントがありません