【Excel】SORT関数で複数列を基準にソート!Excelの動的並べ替えを数式だけで実行する方法

【Excel】SORT関数で複数列を基準にソート!Excelの動的並べ替えを数式だけで実行する方法
🛡️ 超解決

Excelで大量のデータを扱う際、特定の列を基準に並べ替える作業は頻繁に発生します。特に、複数の列の条件を組み合わせてデータを整理したい場面は多いでしょう。しかし、従来の並べ替え機能では、動的な並べ替えや、数式だけで完結する処理には限界がありました。本記事では、ExcelのSORT関数を使用して、複数列を基準にした動的な並べ替えを数式だけで実現する方法を解説します。これにより、データの更新に合わせて自動的に並べ替え結果が反映されるようになります。

SORT関数は、Excelの動的配列関数の一つです。この関数を使うことで、数式を入力したセルから、並べ替えられた結果が自動的に展開されます。手作業での並べ替えが不要になり、作業効率が大幅に向上します。特に、複数の列を条件に並べ替えたい場合に、その威力を発揮します。

【要点】SORT関数で複数列を基準にデータを並べ替える方法

  • SORT関数: 配列を指定した順序で並べ替える動的配列関数です。
  • 並べ替え基準の指定(by_array引数): 複数列を基準にする場合、配列または配列の配列を指定します。
  • 並べ替え順序の指定(sort_order引数):昇順(1)または降順(-1)を指定します。複数列で異なる順序も可能です。

ADVERTISEMENT

ExcelのSORT関数は、指定した配列(データ範囲)を、1つまたは複数の基準列に基づいて並べ替える機能を提供します。この関数は動的配列関数であり、数式を入力したセルから結果が自動的にスピル(展開)されるため、従来の並べ替え機能とは異なり、元のデータを直接変更することはありません。これにより、参照元のデータを保持したまま、様々な条件で並べ替えられた結果を別の場所に表示できます。

SORT関数は、主に以下の引数で構成されます。

array: 並べ替えたいデータ範囲を指定します。これは必須の引数です。

by_array: 並べ替えの基準となる配列を指定します。デフォルトではarrayの最初の列が基準になりますが、複数列を指定することで、より複雑な並べ替えが可能になります。この引数で、複数列を基準に並べ替える際のキーとなります。

sort_order: 並べ替えの順序を指定します。昇順は1、降順は-1を指定します。この引数も配列で指定することで、各基準列に対して異なる並べ替え順序を設定できます。

by_col: 列ではなく行を基準に並べ替える場合にTRUEを指定します。デフォルトはFALSE(列基準)です。

お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

SORT関数で複数列を基準に並べ替える手順

SORT関数を使って、複数列を基準にデータを並べ替える基本的な手順を説明します。ここでは、例としてA1からC10の範囲にあるデータを、B列を昇順、次にC列を降順で並べ替える場合を想定します。

  1. 並べ替え結果を表示したいセルを選択する
    例えば、E1セルを選択します。ここにSORT関数の結果が表示されます。
  2. SORT関数を入力する
    E1セルに以下の数式を入力します。
    =SORT(A1:C10, B1:B10, 1, C1:C10, -1)
  3. 数式を確定する
    Enterキーを押すと、A1:C10の範囲のデータが、B列を昇順(1)で、次にC列を降順(-1)で並べ替えられた結果がE1セルから自動的に展開されます。

この数式では、最初の引数 `A1:C10` が並べ替え対象のデータ範囲です。2番目の引数 `B1:B10` は1つ目の並べ替え基準となる列です。3番目の引数 `1` は、B列を昇順で並べ替えることを意味します。4番目の引数 `C1:C10` は2つ目の並べ替え基準となる列です。5番目の引数 `-1` は、C列を降順で並べ替えることを意味します。

このように、`by_array` と `sort_order` をペアで複数指定することで、多段階の並べ替え条件を設定できます。指定できる基準列の数に制限はありませんが、通常は3~4列程度で十分な場合が多いでしょう。

by_array引数とsort_order引数で複数列を指定する

SORT関数で複数列を基準に並べ替える際に、`by_array` 引数と `sort_order` 引数に配列を指定する方法は、Excelのバージョンによって若干異なります。Excel for Microsoft 365では、配列定数や配列全体を直接指定できます。

Excel for Microsoft 365での複数列指定

Microsoft 365版Excelでは、`by_array` 引数と `sort_order` 引数に、配列定数 `{}` を使って複数の列範囲や順序をまとめて指定できます。例えば、B列を昇順、C列を降順、D列を昇順で並べ替えたい場合は、以下のように記述します。

=SORT(A1:D10, {B1:B10,C1:C10,D1:D10}, {1,-1,1})

この場合、`{B1:B10,C1:C10,D1:D10}` の部分で、並べ替えの基準となる列を配列としてまとめて指定しています。そして `{1,-1,1}` の部分で、それぞれの列に対する並べ替え順序(昇順、降順、昇順)を指定します。この指定順序が、並べ替えの優先順位となります。

Excel 2019以前のバージョンでの注意点

Excel 2019以前のバージョンでは、SORT関数自体が存在しないため、この方法で並べ替えることはできません。これらのバージョンで複数列を基準に並べ替えるには、従来の「並べ替え」機能を使用するか、VBAマクロを作成する必要があります。

もし、Excel 2021などのバージョンで、SORT関数が利用可能であるものの、上記のような配列定数での指定がうまくいかない場合は、各列範囲をカンマで区切って個別に指定する方法が有効な場合があります。しかし、Microsoft 365版Excelの機能が最新であり、最も柔軟な記述が可能です。

ADVERTISEMENT

並べ替え順序を昇順・降順で組み合わせる

複数列を基準に並べ替える場合、各列で昇順と降順を自由に組み合わせることができます。これは、`sort_order` 引数に `1`(昇順)と `-1`(降順)を列の数だけ指定することで実現します。

例えば、氏名(A列)で昇順に並べ、同姓の場合は年齢(B列)で降順に並べたい場合を考えます。データ範囲が `A1:B10` だとすると、数式は以下のようになります。

=SORT(A1:B10, {A1:A10, B1:B10}, {1, -1})

この例では、まず `A1:A10` の範囲を昇順(`1`)で並べ替えます。次に、同姓で並び順が変わらない人たちについて、`B1:B10` の範囲を降順(`-1`)で並べ替えます。

このように、`by_array` と `sort_order` のペアを増やすことで、より複雑な条件での並べ替えが可能です。例えば、部署(A列)を昇順、役職(B列)を降順、氏名(C列)を昇順で並べたい場合は、以下のようになります。

=SORT(A1:C10, {A1:A10, B1:B10, C1:C10}, {1, -1, 1})

この柔軟性により、Excelのデータ分析における並べ替え作業が格段に効率化されます。

SORT関数でよくある失敗パターンと対処法

#CALC! エラーが表示される
このエラーは、配列のサイズが一致しない場合に発生することが多いです。例えば、`array` 引数で指定した範囲と、`by_array` 引数で指定した基準列の行数が異なる場合などが考えられます。数式を確認し、すべての範囲の行数が同じであることを確認してください。

期待通りに並べ替えられない
並べ替え順序の指定が間違っている可能性があります。`sort_order` 引数に `1`(昇順)または `-1`(降順)が正しく指定されているか確認してください。また、複数列を指定した場合の優先順位も重要です。数式で指定した順番通りに並べ替えが行われているか、再確認してください。

データがスピルしない
結果を表示したい範囲に、他のデータが入力されていると、スピルエラーが発生します。結果を表示したいセルから、数式で展開される範囲(スピル範囲)に、他のセルが重なっていないか確認してください。重なっている場合は、重なっているデータを削除するか、別の場所に数式を入力してください。

数値と文字列の混在による予期しない並べ替え
数値データと文字列データが混在している列を基準に並べ替えると、Excelの自動的な型変換や解釈により、意図しない順序になることがあります。数値は数値として、文字列は文字列として正しく認識されているか確認してください。必要に応じて、TEXT関数やVALUE関数などを使用して、データの型を明示的に変換することを検討してください。

日付データの並べ替えがおかしい
日付データが文字列として認識されている場合、正しく並べ替えられません。日付はExcelのシリアル値として正しく入力されているか確認してください。セルの表示形式が「日付」になっていても、内部的に文字列として保存されている場合があります。セルの書式設定を確認し、必要であれば数式で日付型に変換してから並べ替えてください。

機能 SORT関数 従来の並べ替え機能
動的更新 あり(数式の結果が自動更新) なし(手動での再実行が必要)
複数列基準 あり(数式で柔軟に指定可能) あり(ダイアログボックスで設定)
参照元データ変更 なし(元のデータを保持) あり(直接データを変更)
使用バージョン Excel for Microsoft 365 Excel 2010以降
操作方法 数式入力 リボンメニュー操作

SORT関数は、Excel for Microsoft 365で利用できる強力な動的配列関数です。これにより、複数列を基準にした複雑な並べ替えも数式だけで完結させることができます。従来の並べ替え機能と比較して、データの更新に自動で追従する点が最大のメリットです。これにより、常に最新の状態で整理されたデータを参照することが可能になります。ぜひ、日々のデータ整理作業にSORT関数を活用してください。

次に取り組むべきことは、実際のデータを用いてSORT関数の複数列並べ替えを試してみることです。さらに応用として、FILTER関数と組み合わせることで、特定の条件を満たすデータのみを並べ替えるといった高度な操作も可能になります。

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】