Categories: VBA

VBAでセルを並べ替える│Sortオブジェクトの使い方を紹介

この記事では、VBAでExcelのセルを並べ替える方法を、実際のVBAコードも含めて紹介します。

セルの並べ替えは、Excelの機能の中でも日常的に行う操作のひとつです。そもそも、Excelは表計算ソフトのため、同じ属性を持つレコードを複数(大量)記録するのが普通です。

そのうえで、レコードを何らかのキーを基に昇順・降順に並べ替える機会は多いのです。

VBAを学習するうえでも優先度の高い内容となりますので、早速VBAコードを見ていきましょう。

VBA│セルを並べ替える

この章では、セルB列に入力されている値(人口)をキーに、A2:B8の範囲を昇順に並べ替えるVBAコードを紹介します。

見本:並べ替えの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

後半へ

①SortOn(並べ替えの対象)
定数内容
xlSortOnCellColorセルの色
xlSortOnFontColorフォント(文字)の色
xlSortOnIconアイコン
xlSortOnValue
② Order(昇順/降順の指定)
定数内容
xlAscending昇順
xlDescending降順
③DataOption(テキストの並べ替え指定)
定数内容
xlSortNormal数値とテキストを別々に扱う
xlSortTextAsNumbersテキストも数値データとして扱う

後半部分のプロパティ

前半より

With ActiveSheet.Sort
 .SetRange Range(“A1:B8”)
 ①.Header = xlYes
 ②.Orientation = xlTopToBottom
 .Apply
End With

End Sub

①Header(先頭行の扱い)
定数内容
xlGuess自動判定
xlYes先頭行は見出し
xlNo先頭行は見出しではない
②Orientation(並べ替えの方向)
定数内容
xlSortColumns
xlTopToBottom
行の並べ替え
xlSortRows
xlLeftToRight
列の並べ替え

Orientationプロパティでは、行の並べ替えか、列の並べ替えかを指定しますが、それぞれ定数は2つあります。どちらを使っても構いません。

Webs

元事務処理担当者として、プログラミングを活用した業務改善を推進している。プログラマ出身ではない事務職の現場目線で情報を発信。 その他、webs-studio.jpをメインに、複数のブログサイトを立ち上げており、合計で月間10万PVのメディア運営を行っている。 姉妹サイト一覧