Excelでデータ分析をする際、データの並べ替えは避けて通れない作業ですよね。
売上順に並べたり、日付順に整理したり、そのたびに「並べ替え」機能を使っている方も多いのではないでしょうか?
手動で並べ替えると元のデータが変わってしまうし、複数条件での並べ替えは設定が面倒だったりしませんか?
そんなあなたの悩みを一瞬で解決してくれるのが、Excelの「SORTBY関数」です! この関数を使えば、元のデータを壊すことなく、自由自在に、しかも動的にデータを並べ替えることができます。
この記事では、SORTBY関数の基本的な使い方から、知っておくと便利な応用技、そして使う上での注意点まで、具体例を交えながら徹底的に解説していきます。
SORTBY関数とは?
SORTBY関数は、Excel 365およびExcel for the webで利用できる「動的配列関数」の一つです。
「動的配列関数」って何?
これまでのExcelの関数は、結果が単一のセルに表示されるものがほとんどでした。
しかし、Excel 365から登場した動的配列関数は、入力したセルだけでなく、結果が複数のセル(これを「スピル範囲」と呼びます)に自動的に展開(スピル)されるのが最大の特徴です。
SORTBY関数もこの特性を持つため、わざわざ並べ替えの範囲を選択したり、結果をコピー&ペーストしたりする手間が一切かかりません。
SORTBY関数の基本構文
SORTBY関数は、以下の構文で使用します。
=SORTBY(配列, 基準配列1, [並べ替え順序1], [基準配列2, 並べ替え順序2], …)
各引数の役割を見ていきましょう。
配列
(必須):- 並べ替えたい「元データ」が含まれる範囲または配列です。ここが、並べ替えられて結果として表示されます。
基準配列1
(必須):- 並べ替えの「基準」となる最初の範囲または配列です。この配列の値に基づいて
配列
が並べ替えられます。
- 並べ替えの「基準」となる最初の範囲または配列です。この配列の値に基づいて
並べ替え順序1
(省略可能):基準配列1
に基づいて並べ替える順序を指定します。1
: 昇順 (小さい順、A→Z、古い日付順) – 省略した場合のデフォルト値-1
: 降順 (大きい順、Z→A、新しい日付順)
基準配列2, 並べ替え順序2, ...
(省略可能):- 2番目以降の並べ替え条件を指定したい場合に、
基準配列
と並べ替え順序
のペアで指定します。最大126ペアまで指定可能です。
- 2番目以降の並べ替え条件を指定したい場合に、
基本編:まずはココから!SORTBY関数のシンプルな使い方
まずは、簡単なデータを使ってSORTBY関数の基本をマスターしましょう。
例1-1:単一の列を基準に昇順で並べ替える
【シチュエーション】 商品リストがあり、それを「売上」の少ない順(昇順)に並べ替えて表示したい。元のリストはそのまま残しておきたい場合に便利です。
【元データ】
商品名 | 売上 |
---|---|
A | 1200 |
B | 800 |
C | 1500 |
D | 950 |
【入力する関数】 今回は、結果をF2セルから表示すると仮定します。 F2セルに以下の関数を入力してください。
=SORTBY(A2:B5, B2:B5, 1)
A2:B5
: 並べ替えたい元データ全体(「商品名」と「売上」の列)B2:B5
: 並べ替えの基準となる「売上」列1
: 昇順で並べ替えることを指定
【解説】 この関数を入力すると、A2:B5
の範囲にあるデータが、B2:B5
の「売上」の値に基づいて昇順に並べ替えられ、F2セルから自動的に展開(スピル)されます。
【結果】
商品名 | 売上 |
---|---|
B | 800 |
D | 950 |
A | 1200 |
C | 1500 |

元のデータ(A2:B5)は全く変更されず、F列以降に並べ替えられたデータが表示されるのがわかりますね。
例1-2:単一の列を基準に降順で並べ替える
【シチュエーション】 先ほどの例とは逆に、商品を「売上」の多い順(降順)に並べ替えて表示したい。
【元データ】
商品名 | 売上 |
---|---|
A | 1200 |
B | 800 |
C | 1500 |
D | 950 |
【入力する関数】 F2セルに以下の関数を入力してください。
=SORTBY(A2:B5, B2:B5, -1)
1
を-1
に変更するだけです!
【解説】 引数並べ替え順序
を-1
とすることで、降順(大きい順)に並べ替えることができます。
【結果】
商品名 | 売上 |
---|---|
C | 1500 |
A | 1200 |
D | 950 |
B | 800 |

応用編:もう手作業には戻れない!SORTBY関数の実践テクニック
ここからがSORTBY関数の真骨頂です!実務で本当に役立つ応用テクニックを紹介します。
例2-1:複数条件で並べ替える — 部門別ランキングも自由自在!
【シチュエーション】 社員リストを、まず「部門」を昇順に並べ、さらにその中で「売上」を降順に並べ替えて表示したい。
【元データ】
部門 | 氏名 | 売上 |
---|---|---|
営業 | 佐藤 | 120 |
開発 | 田中 | 80 |
営業 | 鈴木 | 150 |
開発 | 山田 | 90 |
経理 | 加藤 | 50 |
【入力する関数】 E2セルに以下の関数を入力してください。
=SORTBY(A2:C6, A2:A6, 1, C2:C6, -1)
A2:C6
: 並べ替えたい元データ全体A2:A6, 1
: 1つ目の基準。「部門」列を昇順にC2:C6, -1
: 2つ目の基準。「売上」列を降順に
【解説】 このように、「基準配列」と「並べ替え順序」のペアを必要なだけ追加することで、複数の条件でデータを並べ替えることができます。Excelの並べ替え機能でいう「レベルの追加」と同じような操作を関数で実現できます。
【結果】
部門 | 氏名 | 売上 |
---|---|---|
営業 | 鈴木 | 150 |
営業 | 佐藤 | 120 |
開発 | 山田 | 90 |
開発 | 田中 | 80 |
経理 | 加藤 | 50 |

「営業部」の鈴木さんが佐藤さんより上に来ている(売上が高い)のがわかりますね。
例2-2:TEXT関数やCHOOSE関数と組み合わせて、日付や曜日の並べ替えをカスタマイズ!
【シチュエーション】 イベント日程表があり、曜日データ(月、火、水…)をカレンダー通りの順序(月曜→日曜)で並べ替えたい。通常の並べ替えでは「日、月、火…」のように五十音順になってしまい、思った通りの順番になりません。
【元データ】
日付 | 曜日 | 作業内容 |
---|---|---|
2025/06/16 | 月 | レポート作成 |
2025/06/17 | 火 | 会議 |
2025/06/18 | 水 | 資料作成 |
2025/06/19 | 木 | 顧客訪問 |
2025/06/20 | 金 | 企画書作成 |
2025/06/21 | 土 | 休日 |
2025/06/22 | 日 | 休日 |
2025/06/15 | 日 | 休日 |
【考え方】 文字列である「曜日」を、並べ替えたい順番に対応する数値に変換する「基準配列」を、SORTBY関数の中で一時的に作成します。ここでは、CHOOSE
関数とMATCH
関数を組み合わせて、曜日を数値(月=1, 火=2, … 日=7)に変換する方法を使います。
【入力する関数】 E2セルに以下の関数を入力してください。
=SORTBY(A2:C9, CHOOSE(MATCH(B2:B9,{"月","火","水","木","金","土","日"},0),1,2,3,4,5,6,7), 1)
A2:C9
: 並べ替えたい元データ全体CHOOSE(MATCH(B2:B9,{"月","火","水","木","金","土","日"},0),1,2,3,4,5,6,7)
:- これがカスタムの「基準配列」を生成する部分です。
MATCH(B2:B9,{"月","火","水","木","金","土","日"},0)
: B列の曜日が、指定した文字列配列{"月","火","水","木","金","土","日"}
の中で何番目にあるかを数値で返します。例えば「月」なら1、「日」なら7。C
HOOSE(結果の数値, 1,2,3,4,5,6,7)
: MATCH関数の結果(1~7)に応じて、対応する数値(1~7)を返します。これにより、曜日が並べ替えたい順序の数値に変換されます。
1
: 変換された数値(基準配列)を昇順に並べ替えることを指定
【解説】 このような少し複雑な組み合わせ技を使うことで、Excelが通常認識しないカスタムの並べ替え順序を実現できます。応用すれば、例えば「S, A, B, C」といった評価ランク順に並べ替える、といったことも可能です。
【結果】
日付 | 曜日 | 作業内容 |
---|---|---|
2025/06/16 | 月 | レポート作成 |
2025/06/17 | 火 | 会議 |
2025/06/18 | 水 | 資料作成 |
2025/06/19 | 木 | 顧客訪問 |
2025/06/20 | 金 | 企画書作成 |
2025/06/21 | 土 | 休日 |
2025/06/15 | 日 | 休日 |
2025/06/22 | 日 | 休日 |

無事、月曜から日曜の順番に並べ替えることができました!
例2-3:他の動的配列関数との連携 — 抽出+並べ替えで最強リスト!
【シチュエーション】 社員リストの中から、「営業部」の社員だけを抽出し、さらにその中で「売上」の高い順(降順)に並べ替えたリストを作成したい。
【使用関数】 FILTER
関数 と SORTBY
関数
【元データ】
部門 | 氏名 | 売上 |
---|---|---|
営業 | 佐藤 | 120 |
開発 | 田中 | 80 |
営業 | 鈴木 | 150 |
開発 | 山田 | 90 |
経理 | 加藤 | 50 |
【入力する関数】 E2セルに以下の関数を入力してください。
=SORTBY(FILTER(A2:C6,A2:A6="営業"), FILTER(C2:C6,A2:A6="営業"), -1)
FILTER(A2:C6,A2:A6="営業")
:- まず
FILTER
関数で、A列(部門)が「営業」の行だけを抽出します。 - この抽出結果が、SORTBY関数の
配列
(並べ替える元データ)となります。
- まず
FILTER(C2:C6,A2:A6="営業")
:- 同様に
FILTER
関数で、A列(部門)が「営業」の行のC列(売上)だけを抽出します。 - この抽出結果が、SORTBY関数の
基準配列1
(並べ替えの基準)となります。
- 同様に
-1
: 売上を降順で並べ替えることを指定
【解説】 このように、SORTBY関数の中に別の動的配列関数を入れ子にすることで、「特定の条件で抽出したデータを、さらに別の条件で並べ替える」という、非常に高度なデータ操作を一つのセルに入力するだけで実現できます。これは従来のExcelでは考えられなかった柔軟性です。
【結果】
部門 | 氏名 | 売上 |
---|---|---|
営業 | 鈴木 | 150 |
営業 | 佐藤 | 120 |

SORTBY関数を使用する際の注意点
非常に便利なSORTBY関数ですが、使う上でいくつか注意しておくべき点があります。
- スピル範囲の確保: SORTBY関数は結果が複数のセルに「スピル」します。関数を入力したセルの下や右に、結果が展開されるだけの十分な空きスペースがないと、
#SPILL!
エラーが表示されます。このエラーが出たら、結果が表示される予定の範囲に別のデータがないか確認し、削除してください。 - 引数の範囲の整合性:
配列
(並べ替える元データ)と基準配列
の行数(または列数)は一致している必要があります。例えば、配列
がA2:C10(9行)なのに、基準配列
をB2:B5(4行)としてしまうと、#VALUE!
などのエラーが発生します。 - Excel 365 / Web版のみ対応: SORTBY関数は、Excel 365およびExcel for the webの機能です。残念ながら、Excel 2019以前のバージョンでは利用できません。共同作業者とファイルを共有する際は、相手のExcelバージョンに注意が必要です。
- 元のデータは変更されない: SORTBY関数は、元のデータを直接並べ替えるのではなく、並べ替えられた新しい配列を生成します。これは大きな利点ですが、もし「元のシートのデータを直接並べ替えたい」という場合は、リボンの「データ」タブにある通常の「並べ替え」機能を使用してください。
- 基準配列のデータ型: 数値、文字列、日付など、様々なデータ型に対応していますが、型が混在している場合(例: 数値の「10」と文字列の「”5″」が混ざっているなど)や、文字列での並べ替え順序(例: 「10」と「2」では文字列として「10」が先にくる)には注意が必要です。
まとめ:SORTBY関数でExcel作業を劇的に効率化しよう!
今回は、ExcelのSORTBY関数について、その基本から、複数条件での並べ替え、さらには他の関数との連携といった応用技までを詳しく解説しました。
SORTBY関数は、Excel 365の強力な機能である動的配列関数の代表格です。これを使いこなせるようになれば、あなたのデータ並べ替え作業は格段にスピードアップし、より柔軟なデータ分析が可能になります。
この記事で紹介した例を参考に、ぜひあなたのExcelワークフローにSORTBY関数を取り入れてみてください。
SORTBY関数だけでなく、FILTER
関数、UNIQUE
関数、SORT
関数といった他の動的配列関数も組み合わせることで、Excelの可能性は無限大に広がります。ぜひ色々な関数を試して、あなたのExcelスキルをさらに向上させてくださいね!
コメント