セル範囲をソートする

タイトルのマクロは、以下

' セル範囲をソートする
' .Range("B2") を基準セルとして、
' 基準セルを含む現在の領域(CurrentRegion)をソートします。
' key1:=Range("B2"), order1:=xlDescending は、
' セル範囲をB2を基準に降順(xlDescending)でソートすることを意味します。
' key2:=Range("C2"), order1:=xlAscending は、
' セル範囲をC2を基準に昇順(xlAscending)でソートすることを意味します。
' Header:=xlYes は、ソート範囲にヘッダー行が含まれていることを示します。
Private Sub Range_Sort()
    With Sheet1
        .Range("B2").CurrentRegion.Sort _
            key1:=Range("B2"), order1:=xlDescending, _
            key2:=Range("C2"), order1:=xlAscending, _
            Header:=xlYes
    End With
End Sub

実行前のシート

実行後のシート

コードの説明

  1. サブルーチンの宣言:Private Sub Range_Sort()
    • このサブルーチンは、セル範囲をソートする操作を行います。
  2. シートへの参照:With Sheet1
    • Sheet1 を対象とした操作を With ステートメント内で行います。
  3. ソートするセル範囲の指定:.Range("B2").CurrentRegion.Sort _ key1:=Range("B2"), order1:=xlDescending, _ key2:=Range("C2"), order1:=xlAscending, _ Header:=xlYes
    • Range("B2") を基準セルとして、そのセルを含む連続したデータ範囲(CurrentRegion)をソートします。
    • .Sort メソッドを使用してソートの設定を行います。

ソートの設定

  • key1:key1:=Range("B2")
    • 最初のソートキーを指定します。この場合、B2 を基準にソートします。
  • order1:order1:=xlDescending
    • 最初のソートキーに対するソートの順序を指定します。この場合、降順(xlDescending)でソートします。
  • key2:key2:=Range("C2")
    • 第二のソートキーを指定します。この場合、C2 を基準にソートします。
  • order1:order1:=xlAscending
    • 第二のソートキーに対するソートの順序を指定します。この場合、昇順(xlAscending)でソートします。
  • Header:Header:=xlYes
    • ソート範囲にヘッダー行が含まれていることを示します。このオプションを設定することで、最初の行がデータの一部としてソートされるのを防ぎます。

補足説明

  • CurrentRegion:
    • CurrentRegion プロパティは、指定されたセル範囲の現在の領域を表します。これは、空白の行や列で囲まれたセル範囲を意味します。
    • 例えば、Range("B2").CurrentRegion は、B2 を基準として、その周囲の連続したデータ範囲を取得します。

このコードを実行すると、Sheet1 のセル B2 を基準にして、その周囲の連続したデータ範囲がソートされます。最初に B2 列を降順にソートし、その後 C2 列を昇順にソートします。範囲内にヘッダー行が含まれているため、ヘッダー行はソートの対象外となります。

Follow me!