セル範囲をソートする
タイトルのマクロは、以下
' セル範囲をソートする
' .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 Sheet1
Sheet1
を対象とした操作をWith
ステートメント内で行います。
- ソートするセル範囲の指定:
.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
列を昇順にソートします。範囲内にヘッダー行が含まれているため、ヘッダー行はソートの対象外となります。