ExcelのVBA・マクロで一覧表を複数の条件で並べ替える方法
ここでは、ExcelのVBA・マクロで一覧表を複数の条件で並べ替える方法を紹介します。
ExcelのVBA・マクロで一覧表を複数の条件で並べ替えるには、Sortを使います。
<サンプル>Sub test36()
‘表の書式設定
Range(“A1:C1”).Interior.Color = rgbYellow
Range(“A1:C1”).Font.Color = rgbRed
Range(“A1:C1”).HorizontalAlignment = xlCenter
Range(“A1:C7”).Borders.Weight = xlThin
Range(“A1:C7”).Font.Name = “Meiryo UI”
Range(“A1:C7”).Font.Size = 12
‘表のデータ
Range(“A1”).Value = “グループ”
Range(“B1”).Value = “名前”
Range(“C1”).Value = “点数”
Range(“A2”).Value = “A”
Range(“A3”).Value = “B”
Range(“A4”).Value = “C”
Range(“A5”).Value = “A”
Range(“A6”).Value = “B”
Range(“A7”).Value = “C”
Range(“B2”).Value = “高橋”
Range(“B3”).Value = “鈴木”
Range(“B4”).Value = “田中”
Range(“B5”).Value = “松井”
Range(“B6”).Value = “野村”
Range(“B7”).Value = “谷重”
Range(“C2”).Value = 100
Range(“C3”).Value = 80
Range(“C4”).Value = 60
Range(“C5”).Value = 50
Range(“C6”).Value = 30
Range(“C7”).Value = 10
‘点数の降順でソート
Range(“A1”).Sort Key1:=Range(“A2”), Order1:=xlAscending, Header:=xlYes,
Key2:=Range(“C2”), order2:=xlDescending
End Sub
「Range(“A1”).Sort Key1:=Range(“A2”), Order1:=xlAscending, Header:=xlYes,
Key2:=Range(“C2”), order2:=xlDescending」で一覧表のソートをしています。
まず、表の一番左端のセルを選択し、表全体を対象にソートをかけます。
「Key1:=Range(“A2”)」でA列の値でソートするよう指示します。「Order1:=xlAscending」で昇順、「Header:=xlYes」で1行目はヘッダー行でありソートから除外するよう引数を指定しておきます。
さらに「Key2:=Range(“C2”)」でA列の値でソートするよう指示します。「order2:=xlDescending」で降順を指定します。
これでグループの昇順、点数の降順でソートができました。