「売上データを金額順に並べ替えたい」「上位5件だけ自動表示したい」。こんな場面、仕事でよくありますよね。
フィルター機能で手動ソートする方法もありますが、データが更新されるたびにやり直すのは面倒です。しかも元データの並び順が変わってしまうのも困りものです。
そんなときに使えるのがSORT・SORTN・SORTBY関数です。元データを変えずに、並べ替えた結果を別のセルに自動で表示してくれます。
この記事では3関数の基本的な書き方から、使い分けフロー、FILTER関数との組み合わせ、Excelとの互換性まで実務サンプル付きで紹介します。
SORT・SORTN・SORTBY関数とは?並べ替え関数3兄弟の共通点
GoogleスプレッドシートにはデータSort専用の関数が3つ用意されています。まず全体像を押さえておきましょう。
3関数のひとこと比較
| 関数 | 読み方 | ひとこと説明 | 使う場面 |
|---|---|---|---|
| SORT | ソート | 指定した列を基準にデータを並べ替える | 売上順・日付順など基本的な並べ替え |
| SORTN | ソートエヌ | 並べ替えた結果から上位N件だけ返す | トップ5・ワースト3など件数指定の抽出 |
| SORTBY | ソートバイ | 別の列(範囲)を基準にして並べ替える | 基準列が表の外にある・複数基準の並べ替え |
3つとも元データはそのままで、別のセルに結果を自動展開(スピル)してくれます。
3関数に共通する3つの特長
元データを変えない
フィルター機能とは違い、元の表はまったく触りません。集計表と元データを同じシートで管理するときも安心です。
スピルで結果が自動展開される
数式を入力したセルから下と右に結果が自動で広がります。データが増えても範囲を広げ直す必要がなく、常に最新の状態を保ちます。
NOTE
スピル先に既にデータがあると「
#REF!(結果がオーバーフローします)」エラーになります。スピル先の領域を必ず空けておいてください。
配列として他の関数に渡せる
SORT・SORTN・SORTBYの結果をFILTER関数の中に入れたり、INDEXで先頭行だけ取り出したりと、他の関数と組み合わせて使えます。
スプレッドシートのSORT関数の書き方と基本的な使い方
SORT関数の構文
=SORT(範囲, 並べ替え列, 昇順か, [並べ替え列2, 昇順か2, ...])
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 範囲 | 必須 | 並べ替えたいデータ範囲 |
| 並べ替え列 | 任意 | 範囲内の何列目を基準にするか(1始まり)。省略時は1列目 |
| 昇順か | 任意 | TRUE=昇順 / FALSE=降順。省略時はTRUE |
| 並べ替え列2, 昇順か2 | 任意 | 第2・第3基準を追加するペア |
SORT関数の基本例
A1:D100に売上データ(A:日付、B:担当者、C:商品、D:金額)が入っているとします。
D列(金額)を降順(多い順)に並べ替える:
=SORT(A1:D100, 4, FALSE)
- 第2引数「4」はD列(4列目)を基準にする指定
- 第3引数「FALSE」は降順
!_images/spreadsheet-sort-sortn-sortby/01_formula_sort-basic.png
複数条件で並べ替える
第4引数以降に「列番号・昇順か」のペアを追加すると、複数の基準で並べ替えられます。「B列(担当者)で昇順、次にD列(金額)で降順」にするには:
=SORT(A1:D100, 2, TRUE, 4, FALSE)
担当者の五十音順にまず並べて、同じ担当者内では金額の多い順に並びます。
TIP
SORT関数の第2引数は「範囲内の列番号」です。A列から始まる範囲ならA列=1、B列=2です。列を追加・削除すると番号がずれる点に注意してください。列のずれが心配な場合はSORTBY関数を使うと安全ですよ。
スプレッドシートのSORTN関数の書き方と基本的な使い方
SORTN関数はGoogleスプレッドシート固有の関数です。ExcelにはSORTN相当の関数がありません。
SORTN関数の構文
=SORTN(範囲, [n], [表示順の同順位モード], [並べ替え列, 昇順か, ...])
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 範囲 | 必須 | 対象のデータ範囲 |
| n | 任意 | 返す行数。省略時は1 |
| 表示順の同順位モード | 任意 | 0/1/2/3(後述)。省略時は0 |
| 並べ替え列, 昇順か | 任意 | SORT関数と同じペア指定 |
SORTN関数の基本例(金額トップ3)
売上上位3件を取り出すには:
=SORTN(A1:D100, 3, 0, 4, FALSE)
- 第2引数「3」で上位3件を指定
- 第3引数「0」は同順位があっても合計3件で返す(既定)
- 第4・第5引数「4, FALSE」でD列(金額)を降順
!_images/spreadsheet-sort-sortn-sortby/02_formula_sortn-top3.png
同順位モード(0/1/2/3)の使い分け
SORTN関数の第3引数(同順位モード)は結果の行数に影響します。
| モード | 動作 | 使いどころ |
|---|---|---|
| 0(既定) | 上位n件をそのまま返す(同順位でも合計n件) | 表示件数を固定したいとき |
| 1 | 同順位を含めて返す(同点があれば件数が増える) | 「5位タイ」を全員表示したいとき |
| 2 | 重複行を除去してから上位n件を返す | 重複データを除いたランキング |
| 3 | 指定列で出現頻度の高い上位n種類を返す | 人気商品・頻出カテゴリの抽出 |
モード3の使い方は少し特殊です。C列(商品名)で最も頻度が高い上位3種類を返すには:
=SORTN(C2:C100, 3, 3, C2:C100, TRUE)
第5引数(TRUE/FALSE)は昇降順ではなく形式的な指定で、実質TRUEを入れておけば問題ありません。
スプレッドシートのSORTBY関数の書き方と基本的な使い方
SORTBY関数の構文
=SORTBY(範囲, 並べ替え基準範囲1, 順序1, [並べ替え基準範囲2, 順序2, ...])
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 範囲 | 必須 | 並べ替えたいデータ範囲 |
| 並べ替え基準範囲1 | 必須 | 並べ替えの基準となる列範囲(例: D2:D100) |
| 順序1 | 必須 | 1=昇順 / -1=降順(注: TRUE/FALSEではない) |
| 並べ替え基準範囲2, 順序2 | 任意 | 第2・第3基準のペア |
SORT関数との大きな違いは「基準を列番号ではなく範囲で指定する」点です。列を追加・削除しても数式を直す必要がなく、範囲さえ正しければ自動で追従します。
SORTBY関数の基本例
A1:D100のデータをD列(金額)の降順に並べ替えるには:
=SORTBY(A1:D100, D1:D100, -1)
SORT関数で書くなら =SORT(A1:D100, 4, FALSE) と同じ結果ですが、SORTBY版は列が増えてもD1:D100の参照が壊れません。
TIP
SORTBY関数の順序指定は
1(昇順)/-1(降順)です。SORT関数のTRUE/FALSEとは異なるので混同しないよう注意してください。
複数基準での並べ替え
「B列(担当者)を昇順、D列(金額)を降順」にするには:
=SORTBY(A1:D100, B1:B100, 1, D1:D100, -1)
基準ペアを追加するだけで何段階でも指定できます。
別シートの列を基準にする例:
=SORTBY(A2:C100, '評価シート'!B2:B100, -1)
別シートの評価点を基準に並べ替えられます。SORT関数では「範囲内の列番号」しか指定できないため、こうした用途にはSORTBYが唯一の選択肢です。
SORT・SORTN・SORTBYの使い分けフローチャート
判断ステップ
どの関数を使うか迷ったときは、次の順番で考えてみてください。
Step 1: 件数を絞りたいか?
- YES → SORTN を使う(上位N件抽出)
- NO → Step 2へ
Step 2: 基準列が元データの範囲外(別シート/別範囲)か?
- YES → SORTBY 一択(別範囲を基準にできるのはSORTBYだけ)
- NO → Step 3へ
Step 3: 列の追加・削除が頻繁に起きる表か?
- YES → SORTBY(列番号がずれる心配がない)
- NO → SORT(書き方がシンプル)
使い分け早見表
| やりたいこと | 使う関数 |
|---|---|
| 全件を1列基準で並べ替え(シンプルな書き方) | SORT |
| 全件を複数列基準で並べ替え(列構成が安定) | SORT |
| 上位N件だけ取り出す | SORTN |
| 同順位を全員表示したい | SORTN(モード1) |
| 頻度の高い上位N種を返す | SORTN(モード3) |
| 基準列が範囲外・別シート | SORTBY |
| 列を追加・削除しやすいダイナミックな表 | SORTBY |
| Excel互換が最優先 | SORTBY(SORTNは除く) |
SORT系関数の実践的な使い方・応用例5選
パターン1: FILTER+SORTで条件付き並べ替え
「東京支店のデータだけを金額降順で表示したい」という場面です。
=SORT(FILTER(A2:D100, B2:B100="東京"), 4, FALSE)
FILTER関数で「東京支店」のデータを抽出し、その結果をSORT関数が金額降順に並べ替えます。
NOTE
SOTの第2引数「4」はFILTER結果内の列番号です。元データ(A:D)の4列目=D列(金額)と一致しますが、FILTER結果の列数が変わると番号もずれます。
FILTER結果が0件のときにエラーを回避するには:
=IFERROR(SORT(FILTER(A2:D100, B2:B100="東京"), 4, FALSE), "該当データなし")
!_images/spreadsheet-sort-sortn-sortby/03_formula_filter-sort.png
パターン2: SORTNで売上ランキング表
月次レポートに「今月の売上トップ5」を自動表示するには:
=SORTN(A2:D100, 5, 0, 4, FALSE)
データが更新されてもランキングが自動で変わります。順位が上書きされないので元データを触らずに済みますよ。
パターン3: SORTBYで別シートの評価順に並べる
顧客マスターシート(A:C列)を、評価シートのスコア(B列)順に並べ替えるには:
=SORTBY(A2:C100, '評価シート'!B2:B100, -1)
顧客マスターに評価列を追加しなくても並べ替えができます。データが分散しているときにSORTBYが力を発揮します。
パターン4: プルダウン+FILTER+SORTで動的レポート
G1セルにデータの入力規則(プルダウン)で支店名を設定しておくと:
=SORT(FILTER(A2:D100, B2:B100=G1), 4, FALSE)
プルダウンで支店を切り替えるたびに、その支店のデータが金額降順で自動表示されます。フィルター機能をいちいち操作する必要がなく、閲覧者が自分で絞り込める資料が作れますよ。
プルダウンの作り方を合わせて確認すると、より実用的に活用できます。
パターン5: SORTNモード3で「人気商品ランキング」
注文ログのC列(商品名)から最も多く登場する上位3種類を取り出すには:
=SORTN(C2:C100, 3, 3, C2:C100, TRUE)
売れ筋商品・頻出カテゴリを自動集計できます。COUNTIF+手動集計より大幅に手間が減りますよ。
SORT系関数でよくあるエラーと対処法
| エラー / 症状 | 原因 | 対処法 |
|---|---|---|
#REF!(オーバーフロー) | スピル先にデータがある | スピル先の領域を空ける |
#VALUE! | SORTBYの基準範囲と元データの行数が不一致 | 基準範囲の行数を元データと揃える |
#N/A | FILTER+SORTで該当データがない | IFERRORで包んでエラー表示を変える |
#NUM! | SORTNのnに0や負数を指定 | nは1以上の整数を指定する |
#NAME? | 関数名のタイポ(SORTNやSORTBY) | 関数名のスペルを確認する |
| 並び順がおかしい | 数値が文字列として入っている | VALUE関数で数値に変換する |
| 日付の並びがずれる | 日付が文字列扱い | DATEVALUE関数で日付型に変換する |
| SORTNの結果が想定と違う | 同順位モード(第3引数)の指定ミス | モード0/1/2/3を見直す |
TIP
#REF!が出たら、数式セルにカーソルを当てると「どのセルがブロックしているか」がポップアップで表示されます。そのセルのデータを別の場所に移動するか、数式を別の空き領域に移してください。
ExcelのSORT・SORTBY関数との違い
SORT関数の引数仕様の違い
| 項目 | Googleスプレッドシート | Excel(Microsoft 365 / Excel 2024) |
|---|---|---|
| 昇順/降順の値 | TRUE / FALSE | 1(昇順)/ -1(降順) |
| 複数基準の指定方法 | 列番号と順序のペアを繰り返す | 配列定数で同時指定可(例: {1,3},{1,-1}) |
| 第4引数の意味 | 第2並べ替え列 | 並べ替え基準(1=行方向/2=列方向) |
スプレッドシートからExcelにコピーした場合、SORT関数の引数の値(TRUE/FALSEと1/-1)が変わるため、結果がずれることがあります。
SORTNはGoogleスプレッドシート固有
SORTNに相当するExcel関数はありません。Excelで同様の結果を出すには、SOTの結果をINDEXとSEQUENCEで上位N件に絞り込む必要があります。スプレッドシートのSORTNはGoogleならではの強みですよ。
SORTBYはExcelにもある
SORTBYはMicrosoft 365とExcel 2024で利用できます。構文もほぼ同じです。スプレッドシートとExcelを行き来する環境では、SORTBY関数が最も互換性が高い選択肢です。
NOTE
Excel 2019以前(永続ライセンス版)にはSORT・SORTBYともに存在しません。古いExcelファイルを共有する場合は、相手の環境を確認してください。
よくある質問(FAQ)
Q. SOTとSORTBYの結果はいつも同じですか?
A. 同じデータを同じ基準で並べ替えた場合、結果は同じです。違いは「基準の指定方法」だけです。SORT関数は「列番号(整数)」で指定し、SORTBY関数は「列の範囲」で指定します。列が追加・削除されても壊れにくい方を選ぶとよいですよ。
Q. SORTN関数はExcelで使えますか?
A. 使えません。SORTNはGoogleスプレッドシート固有の関数です。Excelで上位N件を取り出すには、SORT結果にINDEX+SEQUENCEを組み合わせる必要があります。
Q. スピルエリアのセルを直接編集できますか?
A. できません。スピルで展開されたセルは編集不可です。数式が入っている先頭セル(アンカーセル)だけ編集できます。展開されたセルをクリックすると、数式バーに薄いグレーで元の数式が表示されますよ。
Q. FILTER関数と組み合わせるときの注意点は?
A. SORT関数のなかにFILTER関数を入れる場合、SORT関数の「列番号」はFILTER結果内の列番号になります。元データ全体の列番号と一致する場合は問題ありませんが、FILTER結果の列数が変わると番号がずれます。SORTBYならFILTER結果の範囲を直接指定できるので、より安全な場合もあります。
Q. 並べ替えた結果をさらに並べ替えることはできますか?
A. できます。SORT(SORT(...)) のようにネストするか、SORTとSORTBYを組み合わせることができます。またSORTNとSORTを組み合わせれば「上位N件をさらに別の基準で並べ替え」も1式で書けますよ。
まとめ|SORT・SORTN・SORTBYで並べ替えを自動化しよう
スプレッドシートのSORT・SORTN・SORTBY関数のポイントをおさらいします。
- SORT: 指定列を基準に全件を並べ替え。書き方がシンプル
- SORTN: 上位N件の抽出。同順位モードで細かく制御できる(Googleスプレッドシート固有)
- SORTBY: 別の列範囲を基準に並べ替え。列の追加・削除に強く、別シート参照も可能
- 3関数ともスピルで結果を自動展開し、元データを変更しない
- FILTER関数と組み合わせると「条件絞り込み+並べ替え」が1式で実現
- ExcelとはSORT関数の引数仕様が一部異なる。SORTBYが最も互換性が高い
まずは =SORT(A1:D100, 4, FALSE) で金額降順の並べ替えから試してみてください。慣れたらSORTNとSORTBYも使い分けてみましょう。
