この記事では、VBAでExcelのセルを並べ替える方法を、実際のVBAコードも含めて紹介します。
セルの並べ替えは、Excelの機能の中でも日常的に行う操作のひとつです。そもそも、Excelは表計算ソフトのため、同じ属性を持つレコードを複数(大量)記録するのが普通です。
そのうえで、レコードを何らかのキーを基に昇順・降順に並べ替える機会は多いのです。
VBAを学習するうえでも優先度の高い内容となりますので、早速VBAコードを見ていきましょう。
この章では、セルB列に入力されている値(人口)をキーに、A2:B8の範囲を昇順に並べ替えるVBAコードを紹介します。
Sub Sample()
With ActiveSheet.Sort.SortFields
 .Clear
 .Add Key:=Range(“B2”), _
  SortOn:=xlSortOnValues, _
  Order:=xlAscending, _
  DataOption:=xlSortNormal
End With
With ActiveSheet.Sort
 .SetRange Range(“A1:B8”)
 .Header = xlYes
 .Orientation = xlTopToBottom
 .Apply
End With
End Sub
前節、並べ替えのVBAコードは前半と後半の2ブロックに分かれています。
Sub Sample()
With ActiveSheet.Sort.SortFields
 .Clear
 .Add Key:=Range(“B2”), _
  SortOn:=xlSortOnValues, _
  Order:=xlAscending, _
  DataOption:=xlSortNormal
End With
後半へ
前半より
With ActiveSheet.Sort
 .SetRange Range(“A1:B8”)
 .Header = xlYes
 .Orientation = xlTopToBottom
 .Apply
End With
End Sub
セルを並べ替えるVBAコードが2つのブロックに分かれている理由について、実際にExcelで並べ替えをするときの作業をイメージすると理解しやすいです。
まず、Excel上のカーソルで並べ替えする範囲を指定します。
※(この操作がVBAコードの後半に該当する)
その後、並べ替えをするためのダイアログで並べ替えのキーや並び順を指定します。
※(この操作がVBAコードの前半に該当する)
おおまかではありますが、このように理解すれば腑に落ちやすいでしょう。
次に前半・後半、それぞれの引数の設定値を説明します。
Sub Sample()
With ActiveSheet.Sort.SortFields
 .Clear
 .Add Key:=Range(“B2”), _
  ①SortOn:=xlSortOnValues, _
  ②Order:=xlAscending, _
  ③DataOption:=xlSortNormal
End With
後半へ
| 定数 | 内容 | 
|---|---|
| xlSortOnCellColor | セルの色 | 
| xlSortOnFontColor | フォント(文字)の色 | 
| xlSortOnIcon | アイコン | 
| xlSortOnValue | 値 | 
| 定数 | 内容 | 
|---|---|
| xlAscending | 昇順 | 
| xlDescending | 降順 | 
| 定数 | 内容 | 
|---|---|
| xlSortNormal | 数値とテキストを別々に扱う | 
| xlSortTextAsNumbers | テキストも数値データとして扱う | 
前半より
With ActiveSheet.Sort
 .SetRange Range(“A1:B8”)
 ①.Header = xlYes
 ②.Orientation = xlTopToBottom
 .Apply
End With
End Sub
| 定数 | 内容 | 
|---|---|
| xlGuess | 自動判定 | 
| xlYes | 先頭行は見出し | 
| xlNo | 先頭行は見出しではない | 
| 定数 | 内容 | 
|---|---|
| xlSortColumns xlTopToBottom  | 行の並べ替え | 
| xlSortRows xlLeftToRight  | 列の並べ替え |