この記事では、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 | 列の並べ替え |