ExcelマクロVBA入門 | 第88回.並べ替え(Sort) | Excelマクロの基礎と応用、エクセルVBAの入門・初級・初心者向け解説



最終更新日:2013-09-04

第88回.並べ替え(Sort)


並べ替えは、Excel2007から大きく変わってしまいました。


しかし、2003までのソートが基本ですので、


まずは、2003までのソートの説明です。


Range.Sortメソッド


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

Key1 最初の並べ替えフィールドを範囲名 (文字列) または Range オブジェクトで指定し、並べ替える値を特定します。
Order1 Key1 で指定した値の並び替え順序を指定します。

Key2 2 番目の並べ替えフィールド。ピボット テーブルを並べ替える場合には使用できません。
Type 並べ替える要素を指定します。ピボットテーブルの時に使用。
Order2 Key2 で指定した値の並び替え順序を指定します。
Key3 3 番目の並べ替えフィールド。ピボット テーブルを並べ替える場合には使用できません。
Order3 Key3 で指定した値の並び替え順序を指定します。
Header 最初の行にヘッダー情報が含まれているかどうかを指定します。xlNo は既定値です。Excel にヘッダーを判断させるには、xlGuess を指定します。
OrderCustom ユーザー設定の並べ替え順のリスト内の番号を示す、1 から始まる整数を指定します。
MatchCase True の場合、大文字と小文字を区別して並べ替えを行います。False の場合、大文字と小文字を区別しないで並べ替えを行います。ピボットテーブルの並べ替えには使用できません。
Orientation 並べ替えを昇順で行うか、降順で行うかを指定します。
SortMethod 並べ替えの方法を指定します。
DataOption1 Key1 で指定した範囲でテキストを並べ替える方法を指定します。ピボットテーブルの並べ替えには適用されません。
DataOption2 Key2 で指定した範囲でテキストを並べ替える方法を指定します。ピボットテーブルの並べ替えには適用されません。
DataOption3 Key3 で指定した範囲でテキストを並べ替える方法を指定します。ピボットテーブルの並べ替えには適用されません。


Key1〜3とOrder1〜3は、セットで指定します。


Order1〜3

xlAscending : 既定値。昇順に並べ替えます
xlDescending : 降順に並べ替えます


Header

xlGuess : 見出しがあるかどうか、ある場合はその場所を Excel が特定します。
xlNo : 既定値。範囲全体が並べ替えの対象になります。
xlYes : 範囲全体が並べ替えられません。


各引数は省略可能です。

しかし、前の設定が引き継がれるので、出来る限り指定した方が良いでしょう。


また、上記以外の引数の設定値については、マクロの記録で確認して下さい。



使用例.

Sub サンプル()
  Range("A1:J11").Sort _
    Key1:=Range("A1"), Order1:=xlAscending, _
    Key2:=Range("B1"), Order2:=xlAscending, _
    Header:=xlYes
End Sub


A1〜J11の表で、1行目が見出しの場合になります。


見易いように、省略可能な引数は、省略しました。


ただし、前記しとおり、出来るだけ省略しないようにして下さい。



2007以降の並べ替え


Sortオブジェクトとなった為、非常に解りづらくなりました。


下位のオブジェクトもあり、これらの説明には、かなり膨大な量が必要なので、


ここでは、サンプルのみ提示します。


上記2003のサンプルコードと同じ処理をする場合です。

Sub サンプル()
  With ActiveSheet

    .Sort.SortFields.Clear
    .Sort.SortFields.Add Key:=.Range("A1"), Order:=xlAscending
    .Sort.SortFields.Add Key:=.Range("B1"), Order:=xlAscending
    .Sort.SetRange .Range("A1:J11")
    .Sort.Header = xlYes
    .Sort.Apply
  End With
End Sub



まだまだ、2003が使われることが多いので、


基本的には、2003までのコードを使用するようにして下さい。


以下も参考にして下さい。

「マクロの記録で覚えるVBA」の第17回.並べ替え







同じテーマ「ExcelマクロVBA入門」の記事

第89回.オートフィルタ(AutoFilter)
第90回.フィルタオプションの設定(AdvancedFilter)
第91回.条件付き書式(FormatCondition)
第92回.名前定義(Names)
第93回.ピボットテーブル(PivotTable)
第94回.コメント(Comment)
第95回.ハイパーリンク(Hyperlink)

新着記事 ・・・新着記事一覧を見る

最後の空白(や指定文字)以降の文字を取り出す|エクセル関数超技(3月26日)
先頭の数値、最後の数値を取り出す|エクセル関数超技(3月26日)
Excelファイルを開かずにシート名をチェック|ExcelマクロVBAサンプル集(3月23日)
数式の参照しているセルを取得する|ExcelマクロVBAサンプル集(3月18日)
CSVの読み込み方法(改の改)|ExcelマクロVBAサンプル集(3月17日)
変数とプロシージャーの命名について|ExcelマクロVBA技術解説(2月12日)
ファイルの一覧取得・削除(File)|Google Apps Script入門(1月24日)
フォルダの一覧取得・作成・削除(Folder)|Google Apps Script入門(1月24日)
フォルダとファイルを扱う(DriveApp)|Google Apps Script入門(1月24日)
スプレッドシートが非常に遅い、高速化するには|Google Apps Script入門(1月17日)

アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|ExcelマクロVBA入門
2.RangeとCellsの使い方|ExcelマクロVBA入門
3.徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)|エクセル関数超技
4.Range以外の指定方法(Cells,Rows,Columns)|ExcelマクロVBA入門
5.セルの参照範囲を可変にする(OFFSET,COUNTA,MATCH)|エクセル関数超技
6.セルのコピー&値の貼り付け(PasteSpecial)|ExcelマクロVBA入門
7.変数とデータ型(Dim)|ExcelマクロVBA入門
8.ひらがな⇔カタカナの変換|エクセル基本操作
9.CSVの読み込み方法|ExcelマクロVBAサンプル集
10.VBAのFindメソッドの使い方には注意が必要です|ExcelマクロVBA技術解説



  • >
  • >
  • >
  • 並べ替え(Sort)

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。

    ↑ PAGE TOP