Excel VBA 初心者の為の入門講座のホームページです

Excel VBA 入門講座


4.ソート

セル範囲のソートにはSortメソッドを使用します。引数により昇順、降順などを指定できます。

メソッド引数定数内容
Sort
Key1文字列、Rangeオブジェクトを指定します。
Order1xlAscending昇順に並び替える
xlDescending 降順に並び替える
Key22番目に優先される文字列,Rangeオブジェクトを指定します
Order2xlAscending昇順に並び替える
xlDescending 降順に並び替える
Key33番目に優先される文字列,Rangeオブジェクトを指定します
Order3xlAscending昇順に並び替える
xlDescending 降順に並び替える
HeaderxlGuess先頭行をタイトル行か自動判定する
xlNo先頭行をタイトル行と見なさない
xlYes先頭行をタイトル行と見なす
OrderCustom
MatchCaseTRUE大文字・小文字を区別する
FALSE大文字・小文字を区別しない
OrientationxlSortRows 上から下へ(行の並び替え)
xlSortColumn左から右へ(列の並び替え)
SortMethodxlPinYin
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
Copyright (C) pc-users.net, All Rights Reserved.