Excel VBAで表をソートする方法|初心者でもわかる簡単解説

パソコンパソコン・スマホ教室
スポンサーリンク

Excelで大量のデータを扱っていると、並べ替え(ソート)を手動で行うのは面倒ですよね。特に、毎回同じような並べ替えを繰り返す場合、VBA(Visual Basic for Applications)を使って自動化すれば、作業効率が大幅にアップします。今回は、初心者の方でもわかりやすいように、Excel VBAを使った表のソート方法を解説します。

スポンサーリンク

Excel VBAで表をソートする基本の流れ

Excelのイメージ

Excelのイメージ

まずは、Excel VBAを使って表をソートする基本的な流れを見ていきましょう。

ソート対象の範囲を指定する

ソートを行いたい範囲を指定します。例えば、からD10までの範囲をソートする場合、以下のように記述します。

vba
Range("D10")

ソートのキー(基準となる列)を設定する

ソートの基準となる列を指定します。例えば、B列を基準にする場合、以下のように記述します。

vba
Key1:=Range("B1")

並び順を指定する

並び順を昇順(小さい順)または降順(大きい順)で指定します。昇順の場合は「xlAscending」、降順の場合は「xlDescending」を使用します。

vba
Order1:=xlAscending

ソートを実行する

最後に、設定した内容を適用してソートを実行します。

vba
Range("D10").Sort Key1:=Range("B1"), Order1:=xlAscending

これで、B列を基準にからD10までの範囲が昇順に並べ替えられます。

複数の列で並べ替える方法

複数の列を基準に並べ替えたい場合、最大3つまでのキーを指定できます。例えば、B列を昇順、C列を降順で並べ替える場合、以下のように記述します。

vba
Range("D10").Sort _
Key1:=Range("B1"), Order1:=xlAscending, _
Key2:=Range("C1"), Order2:=xlDescending

これで、B列を昇順、C列を降順で並べ替えることができます。

テーブル(ListObject)をソートする方法

Excelのテーブル(ListObject)をソートする場合、少し異なる方法を使用します。以下のように記述します。

vba
Dim tbl As ListObject
Set tbl = ActiveSheet.ListObjects(1)

tbl.Sort.SortFields.Clear
tbl.Sort.SortFields.Add Key:=tbl.ListColumns("販売金額").Range, _
SortOn:=xlSortOnValues, Order:=xlDescending
tbl.Sort.Apply

これで、「販売金額」列を降順で並べ替えることができます。

よくある質問や疑問

Q1: ソートの順番をカスタマイズすることはできますか?

はい、できます。例えば、月を「1月, 2月, 3月, …」の順番で並べ替えたい場合、以下のように記述します。

vba
Range("").Sort _
Key1:=Range(""), Order1:=xlAscending, _
CustomOrder:="1月,2月,3月,4月,5月,6月,7月,8月,9月,10月,11月,12月"

これで、A列の月が指定した順番で並べ替えられます。

Q2: ソートの対象範囲を動的に変更することはできますか?

はい、できます。例えば、データの最終行を自動で取得して範囲を設定する場合、以下のように記述します。

vba
Dim lastRow As Long
lastRow = Cells(Rows.Count, "A").End(xlUp).Row

Range("D" & lastRow).Sort _
Key1:=Range("B1"), Order1:=xlAscending

これで、A列の最終行までの範囲がB列を基準に昇順で並べ替えられます。

今すぐ解決したい!どうしたらいい?

LINE公式

いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」

あなたはこんな経験はありませんか?

✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦

平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。

LINEでメッセージを送れば即時解決!

すでに多くの方が私の公式LINEからお悩みを解決しています。

最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。

誰でも無料で使えますので、安心して使えます。

問題は先のばしにするほど深刻化します。

小さなエラーがデータ消失重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。

あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。

相談しに行く

ぜひ、あなたの悩みを私に解決させてください。

まとめ

Excel VBAを使った表のソートは、基本的な流れを押さえれば簡単に実行できます。複数の列での並べ替えや、テーブルのソートも可能です。ぜひ、日々の業務に役立ててください。

他にも疑問やお悩み事があれば、お気軽にLINEからお声掛けください。

コメント

タイトルとURLをコピーしました