データの並び替え(ソート)をする方法として
・RangeオブジェクトのSortメソッド
・Sortオブジェクト
の2種類があります!
この記事では
・Sortオブジェクトを使用した並び替え(ソート)方法
を記載します!
※Sortオブジェクトの方が便利であるため。
※Sortオブジェクトは4列以上の並び替え(ソート)ができます。
※RangeオブジェクトのSortメソッドは3列までしか並び替え(ソート)できません。
VBAコード
ここでは例として、
・シート「sample」のセル「B2」から続く一連の範囲の表の
・1列目、2列目、3列目で並び替え(ソート)
をします。
Option Explicit
Sub dataSort()
Dim ws As Worksheet
Dim targetRanges As Range
'並び替え(ソート)したい表があるシートを取得
Set ws = Worksheets("sample")
'並び替え(ソート)の表の範囲を取得
Set targetRanges = ws.Range("B2").CurrentRegion
With ws.Sort.SortFields
'並び替え(ソート)の設定をクリア
.Clear
'表の1列目で並び替え(ソート)
.Add Key:=targetRanges.Columns(1), SortOn:=xlSortOnValues, Order:=xlAscending
'表の2列目で並び替え(ソート)
.Add Key:=targetRanges.Columns(2), SortOn:=xlSortOnValues, Order:=xlAscending
'表の3列目で並び替え(ソート)
.Add Key:=targetRanges.Columns(3), SortOn:=xlSortOnValues, Order:=xlAscending
End With
With ws.Sort
'並び替え(ソート)の表の範囲を設定
.SetRange targetRanges
'最初の行がヘッダーである旨を指定
.Header = xlYes
'並べ替えの方向を指定
.Orientation = xlSortColumns
'並び替え(ソート)を実行
.Apply
End With
End Sub
実行結果
データの並び替え(ソート)ができました。
参考①
「ソート(並び替え)されたリスト」の作成もできます。
詳細は以下の記事をご確認ください。
参考②
単純に配列をソート(並び替え)することもできます。
詳細は以下の記事をご確認ください。
参考③
上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。
●「Worksheetオブジェクト」の「Sort」プロパティ
●「Sort オブジェクト」のメソッド、プロパティ
●「SortFieldsオブジェクト」のメソッド、プロパティ
●「SortFieldsオブジェクト」の「Add」メソッドの「並び替え(ソート)のルール」
●「SortFieldsオブジェクト」の「Add」メソッドの「昇順 or 降順」