|
セル範囲のソートにはSortメソッドを使用します。引数により昇順、降順などを指定できます。
| メソッド | 引数 | 定数 | 内容 |
| Sort |
| Key1 | | 文字列、Rangeオブジェクトを指定します。 |
| Order1 | xlAscending | 昇順に並び替える |
| xlDescending | 降順に並び替える |
| Key2 | | 2番目に優先される文字列,Rangeオブジェクトを指定します |
| Order2 | xlAscending | 昇順に並び替える |
| xlDescending | 降順に並び替える |
| Key3 | | 3番目に優先される文字列,Rangeオブジェクトを指定します |
| Order3 | xlAscending | 昇順に並び替える |
| xlDescending | 降順に並び替える |
| Header | xlGuess | 先頭行をタイトル行か自動判定する |
| xlNo | 先頭行をタイトル行と見なさない |
| xlYes | 先頭行をタイトル行と見なす |
| OrderCustom | | |
| MatchCase | TRUE | 大文字・小文字を区別する |
| FALSE | 大文字・小文字を区別しない |
| Orientation | xlSortRows | 上から下へ(行の並び替え) |
| xlSortColumn | 左から右へ(列の並び替え) |
| SortMethod | xlPinYin | |
| xlStroke | |
'セル範囲"A1:B100"を2列目をキーにして昇順にソート
Sub SortTest()
Worksheets("Sheet1").Activate
Worksheets("Sheet1").Range(Cells(1, 1), Cells(100, 2)) _
.Sort Key1:=Worksheets("Sheet1").Cells(1, 2),order1:=xlAscending
End Sub
'セル範囲"A1:B100"を2列目をキーにして降順ににソート
Sub SortTest()
Worksheets("Sheet1").Activate
Worksheets("Sheet1").Range(Cells(1, 1), Cells(100, 2)) _
.Sort Key1:=Worksheets("Sheet1").Cells(1, 2),order1:=xlDescending
End Sub
'セル範囲"A1:B100"を2列目をキーにして昇順にソート
Sub SortTest()
Worksheets("Sheet1").Activate
Worksheets("Sheet1").Range("A1:B100") _
.Sort Key1:=Range("B1"),order1:=xlAscending
End Sub
'セル範囲"A1:B100"を2列目をキーにして降順ににソート
Sub SortTest()
Worksheets("Sheet1").Activate
Worksheets("Sheet1").Range("A1:B100") _
.Sort Key1:=Range("B1"),order1:=xlDescending
End Sub
以下の例ではキーを複数指定してセル範囲をソートしています。
'セル範囲"A1:C100"を1列目は降順、2列目は昇順、3列目は降順にソート
Sub SortTest()
Worksheets("Sheet1").Range(Cells(1, 1), Cells(300, 3)) _
.Sort Key1:=Worksheets("Sheet1").Cells(1, 1), order1:=xlDescending, _
Key2:=Worksheets("Sheet1").Cells(1, 2), order2:=xlAscending, _
Key3:=Worksheets("Sheet1").Cells(1, 3), order3:=xlDescending
End Sub
'セル範囲"A1:C100"を1列目は降順、2列目は昇順、3列目は降順にソート
Sub SortTest()
Worksheets("Sheet1").Activate
Worksheets("Sheet1").Range("A1:C100") _
.Sort Key1:=Range("A1"), order1:=xlDescending, _
Key2:=Range("B1"), order2:=xlAscending, _
Key3:=Range("C1"), order3:=xlDescending
End Sub
Do
条件式を満たすまで繰り返す処理
Loop While 条件式
下記の例では、まず初期値として変数 i に 10 が代入しておき、セルに値を代入し、次に i の値を1つ加算し、
i が11以下かどうかを評価します。つまりWhile 条件式を評価する前に処理を 1回実行しています。i の値は11なので
繰り返す処理を実行せずに終了します。
Sub test()
'セルのA1〜A10に1〜10を入力する
i = 10
Do
Worksheets("Sheet1").Cells(i, 1).Value = i
i = i + 1
Loop While i < 11
End Sub
>>Untilを使用する場合
Until〜には"Until 条件式"の形式で条件を指定します。条件式がtrueの間、処理が実行されます。
従って、通常は処理の中でUntil文の条件式がfalseになるようにしたり、
繰り返しを中断するような文を記述します。そうでないとUntil文は処理を永遠にし続けてしまうからです。
"Until 条件式"の記述には2つの形式があり、記述位置により処理内容が異なってきます。
Untilの位置を前にした場合、条件を満たしているのかを判断してから
繰り返す処理を実行します。
Do Until 条件式
条件式を満たすまで繰り返す処理
Loop
下記の例では、まず初期値として変数 i に 1 が代入しておき、次に i が11以下かどうかを評価し、セルに値を代入し、次に i の値を1つ加算し、
もう一度 i が11かどうかを評価し、セルに値を代入します。この処理を i が11になるまで繰り返します。
Sub test()
'セルのA1〜A10に1〜10を入力する
i = 1
Do Until i = 11
Worksheets("Sheet1").Cells(i, 1).Value = i
i = i + 1
Loop
End Sub
これに対してUntilの位置を後ろにした場合、繰り返す処理を実行してから
条件式を満たしているか判断します。つまりどのような条件でも1回は繰り返す処理
を実行します。
Do
条件式を満たすまで繰り返す処理
Loop Until 条件式
下記の例では、まず初期値として変数 i に 10 が代入しておき、セルに値を代入し、次に i の値を1つ加算し、
i が11かどうかを評価します。つまりUntil 条件式を評価する前に処理を 1回実行しています。i の値は11なので
繰り返す処理を実行せずに終了します。
Sub test()
'セルのA1〜A10に1〜10を入力する
i = 10
Do
Worksheets("Sheet1").Cells(i, 1).Value = i
i = i + 1
Loop Until i = 11
End Sub
|