セルの並び替え Range.Sort メソッド



Range.Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)

ExcelVBAでエクセル上のセルの並び替えをするRangeオブジェクトのメソッドです。
並び替えの対象ととする列(ソートキー)は引数で3つまで選択出来ます。
Rangeの部分に並び替えをする範囲を指定します。


○引数一覧
名前 説明 備考
Key1 ソートキー1
(Rangeか並び替え範囲
1行目のフィールド名)
Variant 必須
Order1 Key1の並び替え順 XlSortOrder xlAscending(昇順)
xlDescending(降順)
key2 ソートキー2
(Rangeか並び替え範囲
1行目のフィールド名)
Variant
Order2 Key2の並び替え順 XlSortOrder xlAscending(昇順)
xlDescending(降順)
Key3 ソートキー3
(Rangeか並び替え範囲
1行目のフィールド名)
Variant
Order3 Key3の並び替え順 XlSortOrder xlAscending(昇順)
xlDescending(降順)
Header 最初の行がヘッダーかどうか XlYesNoGuess xlGuess(エクセルに判断させる)
XlYes(1行目ヘッダーとする)
xlNo(既定値:一行目も並び替え対象)
OrderCustom Key1並び順の昇順降順以外の設定 Long 1(既定値)
2以降はユーザー設定リストに対応
MatchCase 大文字・小文字の区別 True or
False
する
しない(既定値)
Orientation 並び替えの方向 XlSortOrientation列挙 xlSortColumns(既定値:縦方向)
=xlTopToBottom
xlSortRows(横方向)
=xlLeftToRight
SortMethod 並べ替えの種類(言語による) XlSortMethod 列挙 xlStroke(総画数)
xlPinYin(既定値:フリガナ(音読))
DataOption1 Key1の文字列並び替え方法 XlSortDataOption 列挙 xlSortTextAsNumbers (文字列を数値とみなす)
xlSortNormal(既定値:文字列と数値は別として扱う)
DataOption2 Key2の文字列並び替え方法 XlSortDataOption 列挙 xlSortTextAsNumbers (文字列を数値とみなす)
xlSortNormal(既定値:文字列と数値は別として扱う)
DataOption3 Key3の文字列並び替え方法 XlSortDataOption 列挙 xlSortTextAsNumbers (文字列を数値とみなす)
xlSortNormal(既定値:文字列と数値は別として扱う)
・引数はKey1以外は省略可能です。が、省略すると各引数は保存されている値で処理されるのである程度指示してあげるのが好ましいとおもいます。
・Key1~3の優先順位はKey1>Key2>Key3となります。
・OrderCustomを指定するには、ユーザー設定リストを作成しておくことが必要になります。
 設定方法はエクセル上で並び替えの画面を表示し(データ→並び替え)、順序の項目欄でユーザー設定リストの「新しいリスト」というところで任意の文字列を記入します。


ピボットテーブルの並び替えは省略してます。


○サンプルコード
 
Sub RStest()
    '並び替え対象範囲(A1~H20)
    Range("A1:H20").Sort _
    key1:=Range("B1"), order1:=xlAscending, _
    key2:="順位", order2:=xlDescending, _
    key3:=Range("C1"), Order3:=xlAscending, _
    Header:=xlGuess, _
    OrderCustom:=1, _
    MatchCase:=True, _
    Orientation:=xlTopToBottom, _
    SortMethod:=xlPinYin, _
    DataOption1:=xlSortNormal
End Sub


↓はエクセル並び替え画面との対応画像です。





○エラー
複数シートをまとめてソートしていたらエラーが出ました。
ソートするシートはアクティブになっていないと、


並べ替えの参照が正しくありません。参照が並べ替えるデータ内にあることと「最優先されるキー」ボックスが空白でないことを確認してください。



とエラーメッセージが出ます。

ソートする前にシートをアクティブにすればエラー回避できるはずです。