アクセス上位ページ
 
最近の更新内容
(6)-o.SpecialCells メソッド ⇐ [PREV]
[NEXT] ⇒ (6)-q.Find メソッド

Excel VBA ≫ 1.基礎編 - セル・レンジ(6)-p.Sort メソッド

Sort メソッド

あるセル範囲内をソートしたい場合は Sort メソッドを使用します。 ソートキーは3つまで指定することができます。その他、並びの昇順・降順や見出しの有無などを引数で指定することができます。

ソート範囲の指定にはCurrentRegionUsedRange、 また、後述するEnd プロパティなどを状況に応じて使い分けるとよいでしょう。



  • 【構文】
    object.Sort (
      [Key1] [, Order1] [, Key2] [, Type] [, Order2] [, Key3] [, Order3] _
      [, Header] [, OrderCustom] [, MatchCase] [, Orientation] [, SortMethod] _
      [, DataOption1] [, DataOption2] [, DataOption3] )

  • 引数名 省略 定数/データ型 説明
    Key1〜3 Variant型 最初の並べ替えフィールドを範囲名 (文字列) または Range オブジェクトで指定します。
    Order1〜3 xlAscending Key で指定したフィールドを昇順で並べ替えます。 (既定値)
    xlDescending Key で指定したフィールドを降順で並べ替えます。
    Type Variant型 並べ替える要素を指定します。
    Header xlGuess 見出しがあるかどうか、Excel が判断します。
    xlYes 先頭行を見出しとし、先頭行以外を並べ替えの対象とします。
    xlNo 範囲全体が並べ替えの対象になります。 (既定値)
    OrderCustom Variant型 ユーザー設定の並べ替え順のリスト内の番号を示す、1 から始まる整数を指定します。
    MatchCase True 大文字と小文字を区別して並べ替えを行います。
    False 大文字と小文字を区別しないで並べ替えを行います。
    (既定値)
    Orientation xlSortColumns 列単位で並べ替えます
    xlSortRows 行単位で並べ替えます。
    (既定値)
    SortMethod xlPinYin 日本語のふりがなの順で並べ替えます。 (既定値)
    xlStroke 文字コードの順で並べ替えます。
    DataOption
    1〜3
    xlSortNormal 数値データとテキスト データを別々に並べ替えます。
    (既定値)
    xlSortTextAsNumbers テキストを数値データとして並べ替えます。

  • Sort メソッドの使用例1
  • ソート範囲がA3〜F13セル固定の場合のソート使用例です。
    ソートキーは『順位』(昇順)で先頭行は見出しという設定です。
    Sub sample6_39()
    '固定範囲のソート例
    
        Range("A3:F13").Sort _
            Key1:=Range("F3"), _
            Order1:=xlAscending, _
            Header:=xlYes
    
    End Sub
    

    <ソート前> sample6_39の実行前 <ソート後> sample6_39の実行後
  • Sort メソッドの使用例2
  • ソート範囲の行が固定でない場合のソート例です。最終行はEnd プロパティで取得しています。 ソートの設定は使用例1と同じです。
    Sub sample6_40()
        Const Title_ROW = 3     '見出し行
        Const MiseNo_COL = 1    '列番号
        Const Sum1_COL = 2
        Const Sum2_COL = 3
        Const Sum3_COL = 4
        Const Total_COL = 5
        Const Rank_COL = 6
        Dim lastRow     As Long '最終行
    
        '最終行取得
        lastRow = Cells(Rows.Count, MiseNo_COL).End(xlUp).Row
    
        '取得した最終行のチェック
        If lastRow <= Title_ROW Then
            MsgBox "明細行なし。", vbExclamation
            End     '処理終了
        End If
    
        'ソート
        Range(Cells(Title_ROW, MiseNo_COL), _
              Cells(lastRow, Rank_COL)).Sort _
                Key1:=Cells(Title_ROW, Rank_COL), _
                Order1:=xlAscending, _
                Header:=xlYes
    
    End Sub
    


    <ソート前> sample6_40の実行前 <ソート後> sample6_40の実行後
  • Sort メソッドの使用例3
  • シート内にソート対象データしか存在しない場合、 ワークシートの UsedRange プロパティが便利です。
    ソートキーは『3月』(降順)で先頭行は見出しという設定です。
    Sub sample6_41()
    'シート内にソート対象データしか存在しない場合
    
        ActiveSheet.UsedRange.Sort _
            Key1:=Range("D1"), _
            Order1:=xlDescending, _
            Header:=xlYes
    
    End Sub
    


    <ソート前> sample6_41の実行前 <ソート後> sample6_41の実行後
カテゴリ内ページ



Page
Top