【マクロVBA】昇順・降順に並び替え!指定範囲をSortメソッドで単一・複数範囲で並び替える

基礎知識

VBAを使用すると、Excelのセル内のデータを効率的に整理することができます。
今回は、セルの並び替え(sort)について詳しく紹介します。

本記事では、Sortメソッドの使い方や注意点、実際の活用例について詳しく解説します。

ぜひ参考にしてください。
それでは見ていきましょう!




⬛︎こんな事ができるようになる!

・Excelのセル内のデータを昇順や降順に並び替えることができる
特定の範囲や複数範囲のデータを正確に整理できる

⬛︎忙しい人向けのコピペ用ソースコード

Sub Sortsample()
'xlAscending:昇順 lDescending:降順
Range("並び替えたい範囲").Sort Key1:=Range("A1"), Order1:=xlDescending
End Sub

並び替えたい範囲はカスタムして使用してください。
Order1には「xlAscending:昇順」または「xlDescending:降順」を当てはめてください。

⬛︎構文の説明

まず、使用するメソッドについてです。使用するのは「Sortメソッド」になります。
Sortメソッドの基本的な構文は以下の通りです。

範囲.Sort Key1:=キー範囲, Order1:=昇順/降順, Key2:=キー範囲, Order2:=昇順/降順, …

範囲: 並び替えたいセルの範囲を指定します。
キー範囲 :並び替えの基準となるセルの範囲を指定します。
昇順/降順: キー範囲での並び順を指定します。

この構文を使用して、セルの並び替えを行うことができます。

昇順・降順で並び替え

・昇順で並び替え

まず、昇順で並び替えをしてみましょう。
下図の見本をご覧ください。

A1からA10のセルに文数値が入力されてあります。
こちらを昇順に並び替えてみたいと思います。

では再度構文を見てみましょう。

範囲.Sort Key1:=キー範囲, Order1:=昇順/降順
見本では範囲はA1からA10になります。
キー範囲は並び替えの基準となるセルなので先頭のA1になります。
昇順/降順は今回は昇順なのでxlAscendingとなります。

では見本を並び替えてみましょう。
ソースコードはこちらです。

Sub AscendingSort()
Range(“A1:A10“).Sort Key1:=Range(“A1“), Order1:=xlAscending
End Sub

それでは実行してみましょう。

狙い通り、昇順に並び替えすることが出来ました。

・降順で並び替え

今度は降順で並び替えをしてみましょう。
下図の見本をご覧ください。

では再度構文を見てみましょう。

範囲.Sort Key1:=キー範囲, Order1:=昇順/降順

今回、昇順/降順は降順なのでxlDescendingとなります。

では見本を並び替えてみましょう。
ソースコードはこちらです。

Sub DescendingSort()
Range(“A1:A10“).Sort Key1:=Range(“A1“), Order1:=xlDescending
End Sub

それでは実行してみましょう。

狙い通り、昇順に並び替えすることが出来ました。

⬛︎単一範囲と複数範囲の並び替え

以下では、単一範囲と複数範囲の並び替えの方法を説明します。

・単一範囲の並び替え

まずは単一範囲の並び替えの方法です。先ほど紹介してきたソースコードと同じですね。
以下のソースコードをご覧ください。

Sub セルの並び替え()
Range(“A1:A10”).Sort Key1:=Range(“A1”), Order1:=xlAscending
End Sub

このソースコードでは、A1からA10の範囲をA1を基準に昇順で並び替えています。

必要に応じて、範囲や基準セル、並び順を変更してください。

・複数範囲の並び替え

次に、複数範囲の並び替えの方法です。以下のソースコードをご覧ください。

Sub セルの並び替え()
With Range(“A1:B10”)
.Sort Key1:=.Columns(1), Order1:=xlAscending, Key2:=.Columns(2), Order2:=xlDescending
End With
End Sub


このソースコードでは、A1からB10の範囲を、A列を基準に昇順、B列を基準に降順で並び替えています。

必要に応じて、範囲や基準セル、並び順を変更してください。

⬛︎よくあるエラーと対処法

VBAのソートに関連するよくあるエラーのいくつかとその対処法を説明します。

1. “実行時エラー ‘1004’:ソートする範囲が正しくありません

このエラーは、ソート範囲が正しく指定されていない場合に発生することがあります。
ソートする範囲がデータが含まれているセル範囲でなければなりません。

対処法
 ソートするデータが正しく指定されていることを確認します。
 ソートする範囲が正しく指定されているか、データが含まれているセルを選択しているかを確認します。

2. “実行時エラー ‘438’:オブジェクトはこのプロパティまたはメソッドをサポートしていません

このエラーは、ソートを実行しようとするオブジェクトがソートメソッドをサポートしていない場合に発生することがあります。
たとえば、ソートしようとするオブジェクトがWorksheetオブジェクトではない場合にこのエラーが発生することがあります。

対処法
ソートメソッドを使用する前に、正しいオブジェクトを参照していることを確認してください。
ソート対象のデータが含まれているWorksheetオブジェクトを適切に指定していることを確認します。

3. “実行時エラー ’91’:オブジェクト変数または With ブロック変数が設定されていません

このエラーは、オブジェクト変数が設定されていない状態でソートを実行しようとした場合に発生することがあります。
ソートするデータを含むオブジェクトが正しく設定されていない可能性があります。

対処法
ソートを実行する前に、ソート対象のデータを含むオブジェクトを正しく設定していることを確認します。
必要に応じてオブジェクトを初期化し、適切に設定してからソートメソッドを呼び出します。

■練習問題

練習問題も別の記事でまとめているので是非参考にしてみてください!

⬛︎公式の説明

わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟

⬛︎まとめ

いかがだったでしょうか?

以上がマクロVBAでのセルの並び替え(sort)についての紹介でした。

Sortメソッドを使用することで、Excelのデータを効率的に整理することができます。

セルの並び替えは、範囲や基準セル、並び順を適切に指定することで正確な結果を得ることができます。

ソースコードの見本を参考にしながら、自身のデータに応じた並び替えを行ってみてください。

それでは次回の記事でお会いしましょう。

 

コメント