セル範囲をソートする
タイトルのマクロは、以下
' セル範囲をソートする
' .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実行前のシート

実行後のシート

コードの説明
- サブルーチンの宣言:
Private Sub Range_Sort()- このサブルーチンは、セル範囲をソートする操作を行います。
- シートへの参照:
With Sheet1Sheet1を対象とした操作をWithステートメント内で行います。
- ソートするセル範囲の指定:
.Range("B2").CurrentRegion.Sort _ key1:=Range("B2"), order1:=xlDescending, _ key2:=Range("C2"), order1:=xlAscending, _ Header:=xlYesRange("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 列を昇順にソートします。範囲内にヘッダー行が含まれているため、ヘッダー行はソートの対象外となります。


