Office
 Computer >> コンピューター >  >> ソフトウェア >> Office

【Excel VBA】オートフィルタでデータを昇順(最小→最大)に並べ替える3つの方法

大きなデータを扱うMicrosoft Excelでは、数値や文字列を昇順(小さい順)に並べ替えたい場面がよくあります。そんなときはVBAマクロを使えば、ワンクリックで簡単かつ高速に並べ替えが可能です。この記事では、VBAコードでオートフィルタを活用してデータを最小から最大へ並べ替える3つの実用的な方法を、実際の画面イメージとともにわかりやすく解説します。

VBAオートフィルタで昇順に並べ替えるコード(クイックビュー)

Sub Autofilter_Sort_Smallest_to_Largest()
With ActiveSheet.Sort
.SortFields.Add Key:=Range("D4"), Order:=xlAscending
.SetRange Range("B4:E16")
.Header = xlYes
.Apply
End With
End Sub

【Excel VBA】オートフィルタでデータを昇順(最小→最大)に並べ替える3つの方法

VBAオートフィルタで昇順に並べ替える3つの方法

ここでは、アルマーニグループの販売担当者に関するデータセットを例に説明します。B列には担当者名、C列には商品種別、D列には受注数量、E列には納品済み数量が入力されています。このデータセットをVBAコードを使って昇順(最小から最大)に並べ替えていきます。以下が今回使用するデータセットの全体像です。

【Excel VBA】オートフィルタでデータを昇順(最小→最大)に並べ替える3つの方法

方法1:昇順指定(xlAscending)で最小から最大に並べ替える

まずは、シンプルなVBAコードでデータを昇順に並べ替える方法を紹介します。受注数量(D列)を基準に、少ない順に並べ替えます。特定の条件で素早くソートしたいときに非常に便利な手法です。以下の手順に従って進めてください。

ステップ1:

  • まず、モジュールを開きます。開発タブから次の場所へ移動してください。

開発 → Visual Basic

【Excel VBA】オートフィルタでデータを昇順(最小→最大)に並べ替える3つの方法

  • Visual Basicをクリックすると、「Microsoft Visual Basic for Applications」というウィンドウが開きます。ここにVBAコードを記述するためのモジュールを挿入しましょう。次の場所へ移動します。

挿入 → 標準モジュール

【Excel VBA】オートフィルタでデータを昇順(最小→最大)に並べ替える3つの方法

ステップ2:

  • 標準モジュールが表示されたら、以下のVBAコードを入力します。
Sub Autofilter_Sort_Smallest_to_Largest()
With ActiveSheet.Sort
.SortFields.Add Key:=Range("D4"), Order:=xlAscending
.SetRange Range("B4:E16")
.Header = xlYes
.Apply
End With
End Sub

【Excel VBA】オートフィルタでデータを昇順(最小→最大)に並べ替える3つの方法

  • 続いて、VBAコードを実行します。次の場所へ移動してください。

実行 → Sub/ユーザーフォームの実行

【Excel VBA】オートフィルタでデータを昇順(最小→最大)に並べ替える3つの方法

  • コードを実行すると、下のスクリーンショットのようにデータが昇順(小さい順)に並べ替えられます。

【Excel VBA】オートフィルタでデータを昇順(最小→最大)に並べ替える3つの方法

関連記事: 同じフィールドに複数条件でAutoFilterを使うVBA(4つの方法)

方法2:見出し行付きの複数列を昇順に並べ替える

次に、複数列を同時に見出し行ごと昇順に並べ替える方法を見ていきましょう。ここでは、販売担当者の名前(B列)受注数量(D列)を基準に並べ替えます。以下の手順に従ってください。

ステップ1:

  • まず、方法1と同じ手順で新しいモジュールを挿入し、以下のVBAコードを入力します。
Sub Sort_Multiple_Columns()
With ActiveSheet.Sort
.SortFields.Add Key:=Range("B4"), Order:=xlAscending
.SortFields.Add Key:=Range("D4"), Order:=xlAscending
.SetRange Range("B4:E16")
.Header = xlYes
.Apply
End With
End Sub

【Excel VBA】オートフィルタでデータを昇順(最小→最大)に並べ替える3つの方法

  • 続けて、VBAコードを実行します。次の場所へ移動してください。

実行 → Sub/ユーザーフォームの実行

【Excel VBA】オートフィルタでデータを昇順(最小→最大)に並べ替える3つの方法

ステップ2:

  • コードを実行すると、下のスクリーンショットのように、販売担当者の名前受注数量を基準にデータが昇順に並べ替えられます。

【Excel VBA】オートフィルタでデータを昇順(最小→最大)に並べ替える3つの方法

関連記事: [解決法] RangeクラスのAutoFilterメソッドが失敗する場合の対処法(5つの解決策)

方法3:ワークシート名を指定して昇順に並べ替える

最後に、ワークシート名を明示的に指定してデータを昇順に並べ替える方法を紹介します。ここでは、納品済み数量(E列)を基準に並べ替えます。対象シートを明確にできるため、複数シートを扱うブックでも安全に実行できるのがメリットです。それでは、以下の手順に従って進めましょう。

ステップ1:

  • まず、方法1と同じ手順で新しいモジュールを挿入し、以下のVBAコードを入力します。
Sub Sort_Smallest_to_Largest()
Rows("4:16").Select
ActiveWorkbook.Worksheets("Smallest to Largest").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Smallest to Largest").Sort.SortFields.Add Key:=Range("E4:E16") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Smallest to Largest").Sort
.SetRange Range("B4:E16")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

【Excel VBA】オートフィルタでデータを昇順(最小→最大)に並べ替える3つの方法

  • 続けて、VBAコードを実行します。次の場所へ移動してください。

実行 → Sub/ユーザーフォームの実行

【Excel VBA】オートフィルタでデータを昇順(最小→最大)に並べ替える3つの方法

ステップ2:

  • コードを実行すると、下のスクリーンショットのように、ワークシート名を指定した状態でデータが昇順に並べ替えられます。

【Excel VBA】オートフィルタでデータを昇順(最小→最大)に並べ替える3つの方法

関連記事: Excel VBAで可視行のみをオートフィルタしてコピーする方法

注意点

👉 Alt + F11キーを同時に押すことで、「Microsoft Visual Basic for Applications」ウィンドウをすぐに開くことができます。

👉 リボンに開発タブが表示されていない場合は、有効化できます。次の場所へ移動して設定してください。

ファイル → オプション → リボンのユーザー設定

まとめ

本記事では、VBAコードを使ってデータを昇順(最小から最大)に並べ替える3つの方法を紹介しました。単一列のソート、複数列のソート、ワークシート名を指定したソートと、用途に応じて使い分けることで、Excel作業の生産性を大きく向上させることができます。ぜひご自身のスプレッドシートで試してみてください。ご不明な点があれば、お気軽にコメントでお知らせください。

関連記事

  • Excel VBAでオートフィルタが有効かどうか確認する方法(4つの簡単な方法)
  • Excel VBAで特定の値以外をオートフィルタする方法
  • Excel VBA:オートフィルタが存在する場合に削除する方法(7つの方法)
  1. Excel VBAでオートフィルターが存在する場合に削除する7つの方法

    Microsoft Excelでは、ワークシートやテーブルからオートフィルターを削除する方法が複数用意されています。この記事では、VBAコードを使って、Excelでオートフィルターが存在する場合にそれを削除する7つの方法を解説します。 以下のリンクからサンプルのExcelファイルをダウンロードして、実際に手を動かしながら学習することもできます。 VBAでオートフィルターを削除する7つの具体例 1. アクティブなワークシートからオートフィルターを削除する 次のスクリーンショットは、アクティブなワークシートに適用されているオートフィルターです。これをVBAコードで削除していきます。 アクティブな

  2. ExcelでCSVファイルを並べ替える方法|初心者でもできる2つの簡単な手順

    ExcelでCSVファイルを扱う場面は非常に多くあります。氏名や住所のデータ、商品情報、リスト管理など、さまざまな用途で活用されています。しかし、データ量が大きくなると操作が少し複雑になり、CSVファイルを並べ替え(ソート)する必要が出てきます。この記事では、ExcelでCSVファイルを並べ替える2つの簡単な方法を、手順を追ってわかりやすく解説します。 練習用に、サンプルファイルをダウンロードしてご利用ください。 CSVファイルとは? 並べ替えの手順に入る前に、まずCSVについて簡単におさらいしましょう。CSVは「Comma Separated Values(カンマ区切り値)」の略で、データを