セルのデータを並び替えするVBAコード

スポンサーリンク

セルのデータ並び替えを自動化すると便利

最近久しぶりにデータを分析する作業をExcelで行う機会があり、今後も断続的に行う作業だったので、自動化ツールを作成することにしました。

その一連の作業の中でデータの並び替えをVBAコードに組み込んでいて、改めてVBAの便利さを実感したので今回コードを残しておきます。

セルの並び替えのVBAコードの概要

データの並び替えのためのオブジェクトはSortというものです。

Sortオブジェクトは並べ替え条件を規定したり、実行したりするもの全体を含んでいて、その中には並べ替えの基準となる行列や並べ替えの順序を設定するSortFieldsオブジェクトがあります。

下記は現在のシートのA1~D100のセルに対して並べ替えを行うマクロを作成し、その後少し修正したVBAコードです。

マクロで作成した並べ替えでは、まずSortFieldsオブジェクトで並べ替えフィールドの条件を設定した後、Sortオブジェクトで全体の条件を設定して、並べ替えを実行する流れになります。

Sub 並べ替え
’ SortFieldsの消去
ActiveSheet.Sort.SortFields.Clear

’ SortFieldsの設定
ActiveSheet.Sort.SortFields.Add Key:=Cells(1, 1), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
ActiveSheet.Sort.SortFields.Add Key:=Cells(1, 4), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal

’ Sortオブジェクトの設定と並び替えの実行
With ActiveSheet.Sort
.SetRange Range(Cells(1, 1), Cells(100, 4))
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

End Sub

スポンサーリンク

SortFieldsオブジェクトの解説

①Sort.SortFields.Clear

並べ替えの基準を一度削除します。

対象に対して初めて並べ替えを設定する場合は必要ないですが、VBAを作成する際は最初に入れておく方がエラーが少ない良いと思います。

②Sort.SortFields.Add

並べ替えの基準を設定します。
下記の引数を記入することで設定することができます。

1)Key

対象となる列・行を記載します。
または対象列・行の最初のセルを記入しても同様の結果になります。

記載方法はRangeでも大丈夫ですし、Cells(2,3)などの記載方法も使用できます。

2)SortOn

並べ替えの基準を設定します。
xlSortOnValuesは値、xlSortOnCellColorはセルの背景色、xlSortOnFontColorはセルの文字色で並べ替えることができます。

規定値はxlSortOnValuesで、値での並べ替えになります。

3)Order

並べ替えの順序を設定します。
xlAscendingは昇順、xlDescendingは降順となります。

規定値はxlAscendingです。

4)DataOption

数値と文字列が混在しているときの並べ替えの方法を設定します。

規定値はxlSortNormalで文字と数字を別々に並べ替えます。
xlSortTextAsNumbersは文字列を数字とみなして並べ替えます。

Sortオブジェクトの解説

Sortオブジェクトに含まれるプロパティ・メソッドは下記のものがあります。

①SetRange

並べ替えの範囲を設定します。
Range(Cells(1, 1), Cells(100, 4))などRangeを用いての記載方法や、Activesheet.Cellsなどのようにシ指定して、シート全体を対象にすることもできます。

②Header

ヘッダーを設定するプロパティです。

xlYesは一行目をタイトルとし、xlNoは一行目をタイトルとせず並べ替えの対象とします。
xlGuessは自動で判定して実行する設定にします。

③Orientation

行方向に並び替えをするか、列方向で並び替えをするかを設定します。
xlTopToBottomは行の並べ替え、xlLeftToRightはあまり使用することはないと思いますが、列方向の並び替えです。
規定値はxlTopToBottomです。

以前のバージョンのExcelではxlSortRows、xlSortColumnsという表記でしたが、今はあまり使用されなくなっています。

④SortMethod

日本語を並べ替える際の基準を設定します。
規定値はxlPinYinで、日本語をふりがな順で並べ替えます。

その他の方法としては文字コード順で並べ替えるxlStrokeがありますが、あまり使用することはないと思います。

⑤Apply

並べ替えを実行するメソッドです。

コメント