「売上データの上位5件だけ取り出したい」「ランキング表を自動で作りたい」。こんな場面、仕事でよくありますよね。
SORT関数で並べ替えると全件が返ってきてしまい、手動で上位だけ切り出すのは面倒です。データが更新されるたびにやり直すのも手間がかかります。
そんなときに便利なのが SORTN関数 です。並べ替えと件数指定を1つの数式で完結でき、上位N件を自動で取り出せます。
この記事では、SORTN関数の基本から同順位モードの使い分け、FILTER関数との組み合わせまで紹介します。
SORTN関数とは?(スプレッドシート独自の関数)
SORTN(ソートエヌ)は、データを並べ替えたうえで 上位N件だけを返す 関数です。「Sort」は並べ替え、「N」は件数を意味します。
SORT関数が全件を返すのに対し、SORTNは指定した件数だけを抽出します。売上ランキングやトップ社員リストの作成にぴったりの関数です。
NOTE
SORTN関数はGoogleスプレッドシート独自の関数です。Excelには同等の機能がありません。
構文
=SORTN(範囲, [n], [display_ties_mode], [並べ替え列1, 昇順か1, ...])
引数の意味
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 範囲 | 必須 | 並べ替えたいデータ範囲(例: A2:D100) |
| n | 任意 | 返す行数。省略すると 1(1行だけ返す) |
| display_ties_mode | 任意 | 同じ値があるときの扱い方。省略すると 0 |
| 並べ替え列1 | 任意 | 基準にする列番号(1始まり) |
| 昇順か1 | 任意 | TRUE = 昇順 / FALSE = 降順 |
並べ替え列と昇順かのペアは、複数組み繰り返して指定できます。
TIP
引数が多く見えますが、最低限必要なのは「範囲」だけです。=SORTN(A2:D10) と書くと、1列目の昇順で1行だけ返します。
SORTN関数の基本的な使い方
この記事では、次の売上データを使って説明します。
| A列(担当者) | B列(支店) | C列(商品) | D列(金額) | |
|---|---|---|---|---|
| 2行目 | 田中 | 東京 | ノートPC | 150000 |
| 3行目 | 佐藤 | 大阪 | モニター | 45000 |
| 4行目 | 鈴木 | 東京 | キーボード | 8000 |
| 5行目 | 高橋 | 名古屋 | ノートPC | 140000 |
| 6行目 | 伊藤 | 大阪 | マウス | 3000 |
| 7行目 | 山本 | 東京 | モニター | 45000 |
| 8行目 | 中村 | 名古屋 | ノートPC | 150000 |
売上上位3件を抽出する
金額が大きい順に上位3件を取り出してみましょう。空いているセル(たとえばF2)に次の数式を入力します。
=SORTN(A2:D8, 3, 0, 4, FALSE)
各引数の意味は次のとおりです。
- A2:D8 … 対象データの範囲
- 3 … 上位3件を返す
- 0 … 同順位モードはデフォルト(ちょうど3件)
- 4 … 4列目(金額)で並べ替え
- FALSE … 降順(大きい順)
結果は次のとおりです。
| F列 | G列 | H列 | I列 |
|---|---|---|---|
| 田中 | 東京 | ノートPC | 150000 |
| 中村 | 名古屋 | ノートPC | 150000 |
| 高橋 | 名古屋 | ノートPC | 140000 |
金額の大きい順に3行だけが返りました。田中と中村は同額ですが、モード0なので3件ちょうどです。
複数列のデータをそのまま抽出する
SORTNは範囲に含まれるすべての列をそのまま返します。上の例でも、担当者・支店・商品・金額の4列すべてが出力されています。
LARGE関数のように「値だけ」ではなく 行全体を取り出せる のがSORTN関数の大きな強みです。担当者名や支店名もセットで確認できるので、ランキング表の作成に向いています。
display_ties(同順位モード)の使い分け
SORTN関数の第3引数 display_ties_mode は、同じ値が複数あるときの処理方法を決めるパラメータです。ここがSORTN関数を使いこなすポイントになります。
モード0(デフォルト)
=SORTN(A2:D8, 3, 0, 4, FALSE)
厳密にN件だけを返します。同じ値があっても件数は変わりません。
先ほどの例では、金額150000の行が2つありますが、結果は3件ちょうどです。「表に3行分しかスペースがない」など、件数を固定したいときに使います。
モード1
=SORTN(A2:D8, 3, 1, 4, FALSE)
N件に加えて、同順位の行もすべて含めます。結果がN件を超える場合があります。
この例では上位3件を指定していますが、1位タイが2名います。結果は次のようになります。
| F列 | G列 | H列 | I列 |
|---|---|---|---|
| 田中 | 東京 | ノートPC | 150000 |
| 中村 | 名古屋 | ノートPC | 150000 |
| 高橋 | 名古屋 | ノートPC | 140000 |
この場合はモード0と同じ3件です。しかし仮に3位にも同額の人がいれば、4件以上返ります。「上位3位まで全員表彰する」ような場面で便利です。
モード2
=SORTN(A2:D8, 3, 2, 4, FALSE)
並べ替え基準列の値が同じ行を重複とみなし、先頭行だけを残してN件を返します。
たとえばD列(金額)を基準にした場合、150000が2行あれば1行に絞ったうえでN件を抽出します。UNIQUE関数と似た動きですが、SORTNならソートと件数制限を同時にこなせます。
モード3
=SORTN(A2:D8, 2, 3, 3, TRUE)
指定した列のユニークな値を上位N種類選び出し、該当する行をすべて返します。
上の例では、3列目(商品名)を基準にユニークな商品を2種類取り出します。商品名のアルファベット順で先頭2種が選ばれ、それに該当するすべての行が返ります。
| F列 | G列 | H列 | I列 |
|---|---|---|---|
| 鈴木 | 東京 | キーボード | 8000 |
| 伊藤 | 大阪 | マウス | 3000 |
「キーボード」と「マウス」がユニーク上位2種として選ばれました。「人気商品トップ3の全データを一覧で見たい」のような場面に向いています。
NOTE
モード3は少しクセがあります。N件ではなく「N種類」を返す点に注意してください。1種類に複数行が該当すれば、結果はN行を超えます。
SORT・LARGE・SMALL関数との違い
SORTとの違い
SORT関数は全件を並べ替えて返します。一方、SORTNは上位N件だけを返します。
=SORT(A2:D8, 4, FALSE) … 全7件が返る
=SORTN(A2:D8, 3, 0, 4, FALSE) … 上位3件だけ返る
「全体を見たい」ならSORT、「上位だけでいい」ならSORTNと使い分けましょう。
LARGE/SMALLとの違い
LARGE関数やSMALL関数は、指定した順位の 値を1つだけ 返します。
=LARGE(D2:D8, 1) … 150000(最大値のみ)
=SORTN(A2:D8, 1, 0, 4, FALSE) … 田中, 東京, ノートPC, 150000(行全体)
LARGE/SMALLは「何位の値は?」を調べるのに向いています。SORTNは「上位N件の行データをまるごと取り出す」のに向いています。
使い分けの判断基準
| やりたいこと | 最適な関数 |
|---|---|
| データ全件を並べ替えたい | SORT |
| 上位N件の行をまるごと取り出したい | SORTN |
| N番目の値だけ知りたい | LARGE / SMALL |
| 条件付きで上位N件を出したい | FILTER + SORTN |
実務でよく使うSORTN活用パターン
FILTER+SORTNで条件付きランキング
FILTER関数とSORTNを組み合わせると、条件付きのランキングを作れます。
「東京支店の売上トップ2」を取り出す例です。
=SORTN(FILTER(A2:D8, B2:B8="東京"), 2, 0, 4, FALSE)
FILTER関数で東京支店のデータだけを抽出し、SORTNで金額上位2件に絞っています。抽出と並べ替えと件数制限が、1つの数式で完結します。
TIP
SORTNの列番号は、FILTER結果の中での列番号です。元データのシート上の列位置とは異なる場合があるので注意してください。
複数条件での並べ替え
SORTNでも複数の並べ替え基準を指定できます。「支店の昇順 → 同じ支店内は金額の降順」で上位5件を取り出す例です。
=SORTN(A2:D8, 5, 0, 2, TRUE, 4, FALSE)
並べ替え列と昇順かのペアを続けて書くだけです。最初の基準が同じ値の場合に、2番目の基準で順序が決まります。
売上ランキングTOP5を自動更新
ダッシュボードに「売上TOP5」を常に表示しておきたい場面に最適な数式です。
=SORTN(A2:D100, 5, 0, 4, FALSE)
データ範囲を広めに取っておけば、行が追加されても自動で最新の上位5件が表示されます。手動でランキングを更新する必要がありません。
月次レポートや週次ミーティングの資料として、常に最新のランキングが確認できます。
よくあるエラーと対処法
| エラー | 原因 | 対処法 |
|---|---|---|
| #REF! | 結果の展開先にデータがある | スピル先のセルを空にする |
| #VALUE! | nに0以下の値を指定した | nは1以上の整数を指定する |
| #VALUE! | 並べ替え列が範囲外 | 列番号が範囲の列数以内か確認する |
| #VALUE! | display_ties_modeに0〜3以外の値を指定した | 0〜3の整数を指定する |
| #N/A | 範囲が空(データなし) | IFERROR関数でエラー時のメッセージを設定する |
| 結果が期待と違う | display_ties_modeの指定ミス | 第3引数の0〜3を見直す |
#REF! エラーの対処例です。
=SORTN(A2:D8, 3, 0, 4, FALSE)
この数式をF2に入れた場合、F2〜I4の範囲にデータがあるとエラーになります。出力先の下方向に十分な空きを確保してください。
エラーを非表示にしたい場合は、IFERROR関数で囲みます。
=IFERROR(SORTN(A2:D8, 3, 0, 4, FALSE), "データがありません")
まとめ
この記事では、スプレッドシートのSORTN関数の使い方を解説しました。
- SORTN関数は 上位N件の行データをまるごと取り出せる Sheets独自の関数
- 第3引数の display_ties_mode で同順位の扱いを細かく制御できる
- モード0は件数固定、モード1は同順位を含める、モード2は重複除去、モード3はユニーク種類指定
- FILTER関数と組み合わせれば条件付きランキングも1つの数式で作れる
- SORT関数は全件返し、LARGE/SMALLは値1つだけ。SORTNは行全体をN件返す
まずは =SORTN(範囲, 3, 0, 列番号, FALSE) の基本形から試してみてください。売上ランキングやトップ社員リストが、数式1つで自動作成できるようになります。
この記事を書いた人
biz-tactics編集部。事務職の現場で本当に使えるExcel・スプレッドシート・AIの技を発信しています。
