Excel で列を値に基づいて自動的に並べ替えるにはどうすればよいですか?
Excel でリストやテーブルを扱う際、新しい情報が追加されても常にデータが並べ替えられた状態で表示されるようにしたいことがよくあります。たとえば、以下のスクリーンショットのように購入テーブルを管理しており、商品の価格が定期的に更新されたり、新しい項目が追加されたりする場合を考えてみましょう。このような状況では、新しい値を入力してもExcel は価格列を自動的に再順序付けせず、データは元の位置に留まり、再度手動で並べ替えを行うまで順序が変わりません。これは、常に並べ替えられた情報を迅速に分析・提示する必要がある場面で、混乱や誤りを引き起こす可能性があります。そのため、変更や追加が発生した時点で列をその値に基づいて自動的に並べ替える方法を知っておくことで、大幅な時間節約とワークフローの正確性維持につながります。
本ガイドでは、ワークシートを更新するたびに指定した列を値に基づいて自動的に並べ替える実用的な方法をご紹介します。以下では、VBA マクロによる解決策と、最新版Excel 向けの動的数式による解決策の両方を解説します。各手法は特定のシナリオに最適化されており、設定手順、活用のヒント、パラメーターの詳細、トラブルシューティング情報を提供することで、あなたが最も適したアプローチを効果的に実装できるようサポートします。
Excel 数式(動的配列)で列を値に基づいて自動並べ替えする

VBA で列を値に基づいて自動並べ替えする
この VBA マクロは、ワークシート内で指定した列に新しい値を入力したり既存のデータを変更したりするたびに、その列内のすべてのデータを自動的に並べ替えます。このアプローチは、古いバージョンのExcel を使用している場合や、追加の列を使わずにテーブル内のデータを常にその場で並べ替えたい場合に最適です。
この方法が役立つ一般的なシナリオ:
- テーブルまたは列内のデータを変更した後、即座に最新の順序が反映され、手動での並べ替えが不要になるようにしたい場合。
- 複数のユーザーが同じデータ範囲を頻繁に更新し、常に一貫した並べ替え表示を維持する必要がある共同作業シートを管理している場合。
開始前に知っておくべきこと:
- VBA ソリューションはワークシートに直接変更を加えます。作業を始める前に、必ずファイルを保存してください。
- マクロは、Excel でマクロが有効になっている場合にのみ動作します。
- マクロは特定のワークシートに紐づいているため、テーブルのレイアウトを変更した場合には調整が必要になることがあります。
1。シートタブバーで現在のワークシート名を右クリックし、「コードの表示」をコンテキストメニューから選択します。![シートタブバーで[コードの表示]オプションが選択された右クリックメニューを示すスクリーンショット](http://cdn.extendoffice.com/images/stories/doc-excel/auto-sort/doc-auto-sort-2.png)
2。 「Microsoft Visual Basic for Applications」ウィンドウが開いたら、対象のワークシートのコードウィンドウに次の VBA マクロコードを貼り付けてください。
VBA:Excel で列を自動並べ替え
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("B:B")) Is Nothing Then
Range("B1").Sort Key1:=Range("B2"), _
Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
End If
End Sub 注:
1) 上記の VBA コードにおいて、「B:B」は B 列を指し、「B1」は B 列の1 行目のセル、「B2」はヘッダーの直下のセルを意味します。これらの参照は、自動並べ替えしたい列に合わせて変更できます。
2) 5 行目のパラメーターHeader:=xlYesは、データ範囲にヘッダー行が含まれていることを示しており、ヘッダーが列の値と一緒に並べ替えられないようにします。データ範囲にヘッダーがない場合は、これをHeader:=xlNoに変更し、同時にKey1:=Range("B2")もKey1:=Range("B1")に修正してください。
3) このマクロは、指定した列内のセル値が変更されるたびに自動でトリガーされます。
3。ワークシートに戻ります。これで、価格列に新しい数値を入力したり既存の値を更新したりするたびに、その列が即座に昇順に再並べ替えられます。
ヒント:新しい値は必ず、列の最後の使用済みセルの直後にご入力ください。データ内に空白セルがあると、並べ替えが期待通りに動作しません。
Excel 数式(動的配列)で列を値に基づいて自動並べ替えする
Excel 365 またはExcel 2021 以降をご利用なら、SORTやSORTBYといった動的配列関数を使えば、コード不要で効率的に並べ替えられたリストを生成でき、データを変更しても自動で更新されます。このソリューションは VBA を一切必要とせず、最新のExcel バージョンでネイティブにサポートされているため、元のデータを一切変えずに、別の範囲やワークシートで並べ替え済みのコピーを利用したい場合に最適です。
このアプローチはどのような場面で使うべきでしょうか?
- 元の生データをそのまま保持しつつ、レポート・ダッシュボード・印刷用など別の場所でリアルタイムに並べ替えられたデータが必要な場合。
- Excel 365、Excel 2021、またはそれ以降の動的配列をサポートするバージョンをご利用の場合。
- この方法では、並べ替えられたデータが新しい領域に表示されますが、元のデータは並べ替えられません。元のデータをその場で再順序付けしたい場合は、上記の VBA ソリューションをご検討ください。
- 動的配列は、Excel 2019 以前のバージョンではご利用いただけません。
1。並べ替え済みリストを表示したい場所を決めます。たとえば、元のテーブルが A1:C10(ヘッダーは1 行目)で、並べ替え済みリストをセル E1 から表示したい場合は、E1 を選択します。
2。セル E1 に次の数式を入力します:2。セル E1 に次の数式を入力します:
=SORT(A2:C10,2,1) 上記の数式について:
- A2:C10は元のデータ範囲(ヘッダーを除く)です。ご自身のデータ範囲に合わせて、こちらを調整してください。
- 2は、2 列目を使って並べ替えを行うことを意味します。たとえば、価格が「範囲を選択してください」の2 列目に含まれている場合などが該当します。
- 1は昇順を指定します。降順に並べ替える場合は、-1を使用してください。
3。Enter キーを押してください。これにより、動的で並べ替え済みのデータが自動的に出力されます。元の範囲(例:新しい価格や商品)にアイテムを追加・削除・編集すると、並べ替え済みリストは即座に更新され、手動での操作は一切不要です。
注:
- 元の範囲の下にさらにデータが追加された場合は、数式内の参照(例:
A2:C10)をその範囲に合わせて拡張する必要があります。 - 常に変化する範囲については、Excel テーブル([挿入]>[テーブル])の使用を検討し、SORT 関数内でテーブル名を参照することで、範囲が自動的に更新されるようにしてください。
- 単一列(例:B2:B10)を使用する場合、数式は次のようにシンプルになります。
=SORT(B2:B10,1,1)。
デモ:Excel で VBA を使用して列を値に基づいて自動並べ替え
Excel で出現頻度に基づいて簡単に並べ替える
Kutools for Excel の「高度なソート」機能を使えば、テキストの長さ、姓、絶対値、出現頻度など、さまざまな基準でデータを簡単に並べ替えられます。

Kutools for Excel— 300 以上の必須ツールでExcel を強化し、作業をより迅速・簡単に。AI 機能を活用して、スマートなデータ処理と生産性の飛躍的な向上を実現します。今すぐ入手
最高の Office 業務効率化ツール
| 🤖 | KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行 | コード生成| カスタム数式作成 | データ分析とチャート生成| 拡張機能呼び出し… |
| 人気の機能:検索・ハイライト、または重複をマーキング | 空白行を削除する | データを失うことなく列の結合またはセルを | 数式を使用しない四捨五入... | |
| スーパー LOOKUP:複数条件 VLookup | 複数値 VLookup | 複数シート間 VLookup | ファジーマッチ.... | |
| 高度なドロップダウンリスト:ドロップダウンリストをすばやく作成 | 連動型ドロップダウンリスト | 複数選択可能なドロップダウンリスト.... | |
| 列マネージャー:指定した数の列を追加|列の移動|非表示列の表示状態を切り替え|範囲および列の比較... | |
| 注目の機能:グリッドフォーカス | デザインビュー |強化された数式バー | ワークブックとシートマネージャー | リソースライブラリ(オートテキスト)| 日付ピッカー | ワークシートの統合 | 暗号化/セルの復号化 | リストからメール送信 | スーパーフィルター | 特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線。。。) 。。。 | |
| トップ15 ツールセット:12 テキストツール(テキストの追加、特定の文字を削除、...)| 50+チャートタイプ(ガントチャート、...)| 40+実用的関数(誕生日に基づいて年齢を計算します、...)| 19 挿入ツール(QR コードを挿入、パスから画像を挿入、...)| 12 変換ツール(単語に変換する、為替レートの変換、...)| 7 結合と分割ツール(高度な行のマージ、セルの分割、...)|さらに多数 |
Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を高め、時間を大幅に節約できる高度な機能を300 以上提供します。最も必要な機能を今すぐ入手するにはこちらをクリック。。。
Office Tab は Office にタブインターフェースをもたらし、作業を大幅に簡単にします
- Word、Excel、PowerPoint でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
- 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
- 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!
すべてのKutools アドインが、たった1 つのインストーラーで完結。
Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。
- オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
- インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
- 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
- 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得