Excelでデータを並べ替えるとき、「この列の値を基準にして並べ替えたいけど、表示するのは別の列も含めた全体」と思ったことはありませんか?
SORT関数でも並べ替えはできます。でも基準を列番号で指定するので、列を挿入・削除すると番号がずれてしまうんですよね。
SORTBY関数なら、基準にしたい列を範囲で直接指定できます。列の構成が変わっても数式が壊れにくく、複数キーでの並べ替えもかんたんです。この記事では、SORTBY関数の使い方を基本から応用まで解説します。
SORTBY関数とは?別列基準で並べ替える関数
SORTBY関数(読み方:ソートバイ)は、指定した基準列の値をもとにデータを並べ替える関数です。
英語の「sort by」は「〜を基準に並べ替える」という意味があります。
SORT関数との最大の違いは、基準を「列番号」ではなく「列の範囲」で指定する点です。
さらに、基準と順序のペアを追加すれば、複数キーでの並べ替えもできます。
たとえば「部署で並べて、同じ部署内では売上が高い順」のような複数条件の並べ替えが、1つの数式で完結しますよ。
SORTBY関数が使えるExcelのバージョン
SORTBY関数が使えるのは以下の環境です。
- Microsoft 365(Windows / Mac)
- Excel 2021
- Excel 2024
- Excel for the web
Excel 2019以前では使えません。
お使いのバージョンがわからない場合は、モダンExcel解説で確認してみてください。
SORTBY関数の書き方(構文と引数)
基本構文
=SORTBY(配列, 基準配列1, [並べ替え順序1], [基準配列2, 並べ替え順序2], ...)
引数の説明
| 引数 | 必須/省略可 | 説明 | 既定値 |
|---|---|---|---|
| 配列 | 必須 | 並べ替え対象のセル範囲または配列 | – |
| 基準配列1 | 必須 | 並べ替えの基準にする列(1列または1行のみ) | – |
| 並べ替え順序1 | 省略可 | 1 = 昇順 / -1 = 降順 | 1(昇順) |
| 基準配列2以降 | 省略可 | 2番目以降の基準と順序のペア(最大126組) | – |
必須の引数は「配列」と「基準配列1」の2つです。
並べ替え順序を省略すると昇順(1)になります。
ポイントは、基準配列に1列(または1行)のみを指定することです。
複数列を基準配列に指定するとエラーになるので注意してください。
基本の使い方|SORTBY関数で別の列を基準に並べ替える
ここから実際の数式を見ていきましょう。
以下の売上データ(A1:D8)を使って解説します。
| 担当者 | 部署 | 売上金額 | 日付 |
|---|---|---|---|
| 佐藤 | 営業部 | 480,000 | 2024/4/5 |
| 鈴木 | 総務部 | 320,000 | 2024/4/12 |
| 高橋 | 営業部 | 550,000 | 2024/4/3 |
| 田中 | 経理部 | 280,000 | 2024/4/18 |
| 伊藤 | 営業部 | 410,000 | 2024/4/8 |
| 渡辺 | 総務部 | 350,000 | 2024/4/15 |
| 山本 | 経理部 | 290,000 | 2024/4/22 |
売上金額の降順で並べ替える
売上金額が高い順に並べ替えてみます。
基準にしたいC列の範囲を直接指定します。
=SORTBY(A2:D8, C2:C8, -1)
第1引数がデータ全体(A2:D8)、第2引数が基準列(C2:C8)、第3引数が降順(-1)です。
結果は以下のとおりです。
| 担当者 | 部署 | 売上金額 | 日付 |
|---|---|---|---|
| 高橋 | 営業部 | 550,000 | 2024/4/3 |
| 佐藤 | 営業部 | 480,000 | 2024/4/5 |
| 伊藤 | 営業部 | 410,000 | 2024/4/8 |
| 渡辺 | 総務部 | 350,000 | 2024/4/15 |
| 鈴木 | 総務部 | 320,000 | 2024/4/12 |
| 山本 | 経理部 | 290,000 | 2024/4/22 |
| 田中 | 経理部 | 280,000 | 2024/4/18 |
SORT関数なら =SORT(A2:D8, 3, -1) と列番号で指定しますが、SORTBY関数は C2:C8 と範囲で指定します。
列を挿入・削除しても範囲参照が自動調整されるので、数式が壊れにくいのがメリットです。
日付の昇順で並べ替える
日付が古い順に並べ替える場合です。
=SORTBY(A2:D8, D2:D8, 1)
第3引数を 1(昇順)にします。昇順は既定値なので =SORTBY(A2:D8, D2:D8) と省略してもOKです。
配列外の列を基準に並べ替える
SORTBY関数の大きな特長は、表示するデータの範囲外にある列でも基準に使えることです。
たとえば、E列に「優先度」が入っている場合、A:D列のデータをE列基準で並べ替えられます。
=SORTBY(A2:D8, E2:E8, 1)
SORT関数ではこれができません。基準列が配列の中に含まれている必要があります。
表に表示したくない基準で並べ替えたいときは、SORTBY関数が便利ですよ。
複数キーで並べ替える|基準と順序をペアで追加
SORTBY関数の真骨頂は、複数の基準で並べ替えられることです。
基準配列と並べ替え順序のペアを追加するだけで、2段階・3段階の並べ替えが実現します。
部署→売上の2キー並べ替え
部署を昇順で並べて、同じ部署内では売上金額を降順にします。
=SORTBY(A2:D8, B2:B8, 1, C2:C8, -1)
第2・3引数が1つ目の基準(部署昇順)、第4・5引数が2つ目の基準(売上降順)です。
結果は以下のとおりです。
| 担当者 | 部署 | 売上金額 | 日付 |
|---|---|---|---|
| 高橋 | 営業部 | 550,000 | 2024/4/3 |
| 佐藤 | 営業部 | 480,000 | 2024/4/5 |
| 伊藤 | 営業部 | 410,000 | 2024/4/8 |
| 山本 | 経理部 | 290,000 | 2024/4/22 |
| 田中 | 経理部 | 280,000 | 2024/4/18 |
| 渡辺 | 総務部 | 350,000 | 2024/4/15 |
| 鈴木 | 総務部 | 320,000 | 2024/4/12 |
部署ごとにまとまり、各部署内では売上が高い順に並んでいますね。
3キー以上の並べ替え
基準と順序のペアは最大126組まで追加できます。
たとえば「部署→日付→売上」の3段階で並べ替えるなら、以下のように書きます。
=SORTBY(A2:D8, B2:B8, 1, D2:D8, 1, C2:C8, -1)
ペアが増えるほど数式は長くなりますが、やっていることはシンプルです。
「基準列, 順序」の組を並べているだけですよ。
SORT関数との違い|どちらを使うべきか
SORT関数とSORTBY関数は、どちらもデータを並べ替える関数です。
用途に応じて使い分けましょう。
| 比較項目 | SORT関数 | SORTBY関数 |
|---|---|---|
| 基準の指定方法 | 列番号(数値) | 列範囲(直接指定) |
| 複数基準 | 不可(1つだけ) | 可(ペアで追加) |
| 列の挿入・削除 | 番号がずれる | 範囲参照なので壊れにくい |
| 列方向ソート | TRUE指定で可能 | 不可(行方向のみ) |
| 配列外の列を基準に | 不可 | 可能 |
| 数式の簡潔さ | 引数が少なくシンプル | 基準列ごとに範囲指定が必要 |
SORT関数が向いているケース:
- 基準が1つだけでシンプルな並べ替え
- 列方向(横方向)に並べ替えたい場合
- 配列の先頭列を基準にする場合(
=SORT(範囲)だけで済む)
SORTBY関数が向いているケース:
- 複数基準で並べ替えたいとき
- 列の挿入・削除が頻繁にある表
- 表示範囲の外にある列を基準にしたいとき
迷ったらSORTBY関数を選んでおけば、あとから基準を追加しやすいですよ。
実務で使えるSORTBY応用パターン
FILTER関数と組み合わせる|抽出+並べ替えを一発で
FILTER関数でデータを絞り込んでから、SORTBY関数で並べ替えるパターンです。
営業部のデータだけを売上順に表示してみます。
=SORTBY(FILTER(A2:D8, B2:B8="営業部"), FILTER(C2:C8, B2:B8="営業部"), -1)
ちょっとむずかしく見えますが、やっていることはシンプルです。
FILTER関数で営業部のデータを抽出し、基準列も同じ条件で抽出しています。
SORTBY関数は「配列」と「基準配列」の行数が一致する必要があるので、どちらもFILTERで絞るのがポイントです。
結果は以下のとおりです。
| 担当者 | 部署 | 売上金額 | 日付 |
|---|---|---|---|
| 高橋 | 営業部 | 550,000 | 2024/4/3 |
| 佐藤 | 営業部 | 480,000 | 2024/4/5 |
| 伊藤 | 営業部 | 410,000 | 2024/4/8 |
SORT関数でも
=SORT(FILTER(A2:D8, B2:B8="営業部"), 3, -1)と書けます。基準が1つならこちらのほうがシンプルですよ。
SORTBY+PHONETIC関数で五十音順に並べ替える
SORTBY関数は漢字をUnicodeのコードポイント順で比較します。
つまり、日本語の名前を並べ替えても五十音順にはなりません。
五十音順にするには、PHONETIC関数と組み合わせます。
=SORTBY(A2:D8, PHONETIC(A2:A8), 1)
PHONETIC関数がセルのふりがな情報を取り出します。
SORTBY関数がそのふりがなを基準に昇順で並べ替えます。
ただし、CSVから取り込んだデータやコピペしたデータにはふりがな情報がありません。
その場合は、対象セルを選択して Shift + Alt + ↑ を押して手動でふりがなを設定してください。
VSTACK+SORTBYで複数シートを統合して並べ替え
月ごとにシートが分かれているデータを1つにまとめて並べ替えるパターンです。
VSTACK関数でデータを縦に結合してからSORTBYで並べ替えます。
=SORTBY(VSTACK(Sheet1!A2:D8, Sheet2!A2:D8), VSTACK(Sheet1!C2:C8, Sheet2!C2:C8), -1)
VSTACK関数でデータ全体と基準列の両方を結合するのがポイントです。
複数シートのデータを手作業でコピペする必要がなくなりますよ。
よくあるエラーと対処法
SORTBY関数で困ったときは、以下の表を確認してみてください。
| 症状 | 原因 | 対処法 |
|---|---|---|
| #SPILL! エラー | スピル先のセルが空でない | 展開先のセルを空にする。結合セルも解除する |
| #VALUE! エラー | 基準配列が複数列になっている | 基準配列は1列(または1行)のみに修正する |
| #VALUE! エラー | 並べ替え順序が1/-1以外 | 並べ替え順序を1(昇順)か-1(降順)に修正する |
| #VALUE! エラー | 配列と基準配列のサイズが不一致 | 配列の行数と基準配列の行数を揃える |
| #NAME? エラー | 関数が使えないバージョン | Microsoft 365またはExcel 2021以降にアップデートする |
| 並び順がおかしい | 数値が文字列として格納されている | VALUE関数で数値に変換してから並べ替える |
| 日本語が五十音順にならない | ふりがな情報の不在 | SORTBY+PHONETIC関数を使う(上記参照) |
最も多いのは「配列と基準配列のサイズ不一致」によるエラーです。FILTER関数と組み合わせるときは、データ全体と基準列の両方に同じFILTER条件を適用してください。
まとめ
この記事では、ExcelのSORTBY関数の使い方を解説しました。
ポイントをおさらいしておきましょう。
- SORTBY関数は、基準にする列を範囲で直接指定して並べ替える関数
- 基準と順序のペアを追加すれば複数キーで並べ替えられる
- 配列の外にある列も基準に使える
- 列の挿入・削除に強く、数式が壊れにくい
- FILTER関数と組み合わせると抽出+並べ替えが一発
- 日本語の五十音順にはPHONETIC関数との組み合わせが必要
- Microsoft 365 / Excel 2021以降で利用可能
基準が1つだけならSORT関数のほうがシンプルです。
でも複数条件で並べ替えたいなら、SORTBY関数を使ってください。
まずは「部署→売上」のような2キー並べ替えから試してみてくださいね。
