7.5 並べ替えをしてみよう
ワークシートに並んでいるデータを、好きな順序に並べ替える方法です。早い話がソートです。データの並べ替えを行うには、並べ替えをしたいデータの範囲に対して???.Sortメソッドを実行します。

ちなみに???の部分は、お馴染みのRangeSelectionなどのセルの範囲を指定するオブジェクトです。詳しくは、5.1 セルや行列を扱うための基本をどうぞ。
???.Sortの制約
???.Sortには次の制約があります。エラーが出たときは、一応疑ってみてください。

 ◆???.Sortの制約
ワークシートへ書いたマクロのとき 並べ替えが出来るのは、そのワークシートのみです。ワークシートがアクティブじゃなくても並べ替えできます。
標準モジュールへ書いたマクロの時 並べ替えを行う対象のワークシートやワークブックがアクティブになっている必要があります。
使用例
???.Sortの使用例です。例では、A1〜B1000の範囲をB列を基準に昇順で並べ替えを行っています。なお、先頭行(1行目)は見出し行とします。

なお、???.Sortの引数には、必要最小限を使っています。詳しくは、以下をどうぞ。

Sub prcSort()

    'セルA1〜M1000の範囲のデータをB列をキーに昇順に並べ替えます
    Range("A1:M10000").Sort _
        Key1:=Range("B1") _
        , Order1:=xlAscending _
        , Header:=xlGuess _
        , MatchCase:=False _
        , Orientation:=xlTopToBottom _
        , SortMethod:=xlPinYin

End Sub
 ※このエクセルマクロはワークシート内へ記述するマクロです
Key1:=Range(列), Order1:=並び順
並べ替えのキーと並べ替えの順序を指定します。並べ替えのキーと並べ替えの順序は3つまで指定できます。(Key1〜Key3Order1〜Order3

キーの指定はお馴染みのRangeColumnsRowsCellsなどのセルや列を指定するオブジェクトで指定します。並べ替えの順序は、小さい順(昇順)ならxlAscending、大きい順(降順)ならxlDescendingを指定します。
Header:=見出しの処理方法
並べ替えをする範囲のデータに見出し行があるか無いかの指定です。xlGuess判断はエクセルにお任せ!です。基本的には、見出しの有無はエクセルに悩んでもらいましょう。

自分で指定したい場合や見出しが無いはxlNo、範囲内に見出しが必ずあるはxlYesを指定します。
MatchCase:=アルファベットの大文字小文字の識別
並べ替えを行うときの、大文字と小文字の並べ替えをどうするかを指定します。False気にするなよっ!で、Aaも同じ文字として扱われます。

逆に、Trueを指定するとAaは別の文字として扱われ、大きい順ならa Aの順、小さい順ならA aの順に並べ替えが行われます。
Orientation:=並べ替えの方向
並べ替えの方向を指定します。xlTopToBottomは行の並べ替え、xlLeftToRightは列の並べ替えです。
SortMethod:=並べ替えの方向
並べ替えのキーの中に日本語(漢字)が含まれていたときの並べ替え順序の指定で、xlPinYinは読み(音読み)順、xlStrokeは画数順です。
Copyright(C) 1999-2006 結城圭介。 All rights reserved