ExcelVBA データの並べ替え
Sortオブジェクト
Excel2007以降の難しいSort
「並べ替え条件の指定」と「並べ替えの挙動」の2つに大きく分かれる
1. 並べ替え条件の指定
シート.Sort.SortFields.Add2 Key:=基準(Range型), _ SortOn:=セルの値かセルの色か文字色か条件付き書式か, _ Order:=昇順か降順か, _ CustomOrder:=ユーザ設定の並べ替え順序しようするか, _ DataOption:=数値と文字列を別々に並べ替えるか文字列を数字とみなすか, _ SubField:=データ型に対して並べ替えるフィールドを指定
【SortOn引数】
定数 | 意味 | 既定値 |
---|---|---|
xlSortOnValues | セルの値 | 〇 |
xlSortOnCellColor | セルの背景色 | |
xlSortOnFontColor | 文字色 | |
xlSortOnIcon | 条件付き書式のアイコン |
【Order引数】
定数 | 意味 | 既定値 |
---|---|---|
xlAscending | 昇順 | 〇 |
xlDescending | 降順 |
【DataOption引数】
定数 | 意味 | 既定値 |
---|---|---|
xlSortNormal | 数値と文字列を別々に並べ替える | 〇 |
xlSortTextAsNumbers | 文字列を数値として並べ替える |
必ず指定しなければならない引数はKeyのみ
2. 並べ替えの挙動
With シート.Sort .SetRange セル範囲(Range型) .Header = ヘッダーを含むか .MatchCase = 小文字大文字を区別するか .Orientation = 行方向か列方向か .SortMethod = ふりがなか文字コードか .Apply '並べ替え実行 End With
【Headerプロパティ】
定数 | 意味 | 既定値 |
---|---|---|
xlGuess | 自動判定 | 〇 |
xlYes | 1行目(1列目)はタイトル | |
xlNo | タイトルを含まない |
【MatchCaseプロパティ】
大文字と小文字を区別する場合はTrue
区別しない場合はFalse
【Orientationプロパティ】
定数 | 意味 | 既定値 |
---|---|---|
xlTopToBottom | 行方向に並べ替え | 〇 |
xlLeftToRight | 列方向に並べ替え |
【SortMethodプロパティ】
定数 | 意味 | 既定値 |
---|---|---|
xlPinYin | ふりがなで並べ替え | 〇 |
xlStroke | 文字コードで並べ替え |
Excel上の画面では次の通り
【例】
With Worksheets("Sheet1").Sort .SortFields.Clear .SortFields.Add2 Key:=Range("C1"), Order:=xlDescending .SetRange Range("A1:D10") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Sortメソッド
Excel2003以前の簡単なSort
セル範囲.Sort Key1:=基準(Range型), Order1:=昇順か降順か, Header:=ヘッダーを含むか
「Key」と「Order」は1~3まで指定できる
その他、「MatchCase」、「Orientation]、「SortMethod」などの引数がある
次のコードはA1セルを含む表全体を並べ替える
Range(”A1”).Sort Key1:=Range("D1"), Order1:=Ascending, Header:=xlYes