「売上トップ3を一覧にしたい」「テストの上位5名を抽出したい」。こんな場面、仕事で意外と多いですよね。
MAX関数なら最大値は出せますが、2番目や3番目に大きい値は取り出せません。並べ替えれば確認できますが、元の表の順番が崩れてしまいます。
LARGE関数を使えば、データの並び順を変えずにN番目に大きい値を一発で取得できます。 この記事では基本の書き方から実務で使える応用パターン、よくあるエラーの対処法まで解説します。
LARGE関数とは?読み方と基本の仕組み
LARGE関数は、指定した範囲の中からN番目に大きい数値を返す関数です。
読み方は「ラージ関数」です。英語の「large(大きい)」がそのまま関数名になっています。Excel 2016以降のすべてのバージョンとMicrosoft 365で使えます。
やっていることはシンプルです。「渡された数値を大きい順に並べて、指定した順位の値を返す」だけです。
たとえば =LARGE(A1:A10, 3) と入力すると、A1からA10の中で3番目に大きい値が返ります。順位を1にすれば最大値と同じ結果です。
NOTE
LARGE関数は「大きい方からN番目」を取得します。「小さい方からN番目」を取りたいときは対になるSMALL関数を使ってください。
LARGE関数の書き方(構文と引数)
基本構文
=LARGE(配列, 順位)
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 配列 | 必須 | 対象となるデータ範囲またはセル範囲 |
| 順位 | 必須 | 大きい方から数えて何番目かを数値で指定 |
配列には、値を取り出したいセル範囲を指定します。テキストや空白セルは自動的に無視され、数値だけが対象になります。
順位には、大きい方から何番目の値が欲しいかを数値で入力します。1を指定すれば最大値、2なら2番目に大きい値です。
TIP
順位にセル参照を使うと、1つの数式をオートフィルで展開できます。たとえばC列に1、2、3…と連番を入れておけば、
=LARGE($B$2:$B$20, C2)で大きい順にまとめて取り出せます。
LARGE関数の基本的な使い方
最も大きい値を取得する
A列に売上データが入っているとします。最大の売上金額を取り出す数式です。
=LARGE(A2:A20, 1)
順位を1にすると最大値を返します。この結果は =MAX(A2:A20) と同じです。
3番目に大きい値を取得する
=LARGE(A2:A20, 3)
A2からA20の中で、3番目に大きい値が返ります。
大きい順にトップ5を一覧表示する
C列に1から5の連番を入力しておきます。D2セルに次の数式を入れてD6までオートフィルします。
=LARGE($A$2:$A$20, C2)
配列を絶対参照($A$2:$A$20)で固定するのがポイントです。固定しないとオートフィル時に範囲がずれてしまいます。
同じ値が複数あるときの動作
LARGE関数は重複する値をそれぞれ別の順位として扱います。
| データ | LARGE順位 |
|---|---|
| 100 | 1番目 |
| 100 | 2番目 |
| 80 | 3番目 |
| 50 | 4番目 |
同じ「100」が2つあっても、1番目と2番目に分けてカウントされます。RANK関数のように同順位がスキップされる動作とは異なるので注意してください。
LARGE関数の実務活用パターン
パターン1: 売上トップ3を抽出
商品ごとの月間売上リストから、上位3件を取り出す例です。B列に売上金額が入っているとします。
=LARGE($B$2:$B$50, 1)
=LARGE($B$2:$B$50, 2)
=LARGE($B$2:$B$50, 3)
月末の売上レポートやプレゼン資料で、上位の数字をすぐに確認できます。
パターン2: テスト成績の上位者をリストアップ(INDEX+MATCH+LARGE連携)
点数の上位3名の名前を取り出す場合です。A列に氏名、B列に点数があるとします。
=INDEX($A$2:$A$30, MATCH(LARGE($B$2:$B$30, C2), $B$2:$B$30, 0))
LARGE関数でN番目に高い点数を取得し、MATCH関数で位置を特定します。INDEX関数でその位置の氏名を返します。C列に1、2、3の連番を入れておけば、上位3名の名前が一覧で表示されます。
パターン3: IFERRORで「データなし」を表示
順位がデータ件数を超えるとエラーになります。IFERROR関数で囲んでおくと安全です。
=IFERROR(LARGE($B$2:$B$20, C2), "データなし")
データが15件しかないのに16番目を指定した場合、エラーの代わりに「データなし」と表示されます。
パターン4: 条件付きでN番目に大きい値を取得(IF+LARGE配列数式)
特定の条件に合うデータだけを対象にしたい場合です。A列に部署名、B列に売上があるとします。「営業部」の中で2番目に大きい売上を求めます。
=LARGE(IF($A$2:$A$30="営業部", $B$2:$B$30), 2)
NOTE
この数式は配列数式です。Excel 2019以前ではCtrl+Shift+Enterで確定する必要があります。Microsoft 365やExcel 2021では通常のEnterで動作します。
パターン5: ROW関数と組み合わせた動的な順位指定
ROW関数を使うと、連番の列を用意しなくても順位を自動で変えられます。
=LARGE($B$2:$B$20, ROW(A1))
下にオートフィルすると、ROW関数の結果が1、2、3…と増えていくので、自動的に1番目、2番目、3番目と取得されます。
よくあるエラーと対処法
| エラー | 原因 | 対処法 |
|---|---|---|
#NUM! | 順位がデータ件数を超えている | データの件数以下の値を指定する。IFERROR関数で囲むと安全 |
#NUM! | 配列に数値が1つも含まれていない | 対象範囲に数値データがあるか確認する |
#VALUE! | 順位に数値以外を指定した | 順位には数値またはセル参照を使う |
#VALUE! | 順位に小数や0以下の値を指定した | 1以上の整数を指定する |
#REF! | 参照範囲が削除された | 行や列の削除で範囲がずれていないか確認する |
| 意図しない値が返る | 配列内に文字列の数字がある | セルの書式が「文字列」になっていないか確認する。VALUE関数で数値に変換 |
TIP
#NUM!エラーはLARGE関数で最も多いトラブルです。「データが10件なのに順位を11にしている」ケースがほとんどです。=COUNTA(範囲)でデータ件数を先に確認しておくと安心です。
SMALL関数との違い・使い分け
LARGE関数と対になる関数がSMALL関数です。構文はまったく同じで、取得する方向だけが逆になります。
比較表
| 項目 | LARGE関数 | SMALL関数 |
|---|---|---|
| 取得する値 | N番目に大きい値 | N番目に小さい値 |
| 構文 | =LARGE(配列, 順位) | =SMALL(配列, 順位) |
| 順位1の結果 | 最大値(=MAX) | 最小値(=MIN) |
| 使用例 | 売上トップ、高得点抽出 | 仕入れ単価の下位、低スコア抽出 |
どちらを使うべき?
- 高い・多い・大きい順に並べたいとき: LARGE関数
- 安い・低い・少ない順に並べたいとき: SMALL関数
順位系の関連関数
順位や最大・最小を扱う関数はほかにもあります。用途に応じて使い分けてください。
| 関数 | 機能 |
|---|---|
| SMALL関数 | N番目に小さい値を取得する |
| MAX関数 | 最大値を取得する |
| MIN関数 | 最小値を取得する |
| RANK関数 | データ内での順位を求める |
| MEDIAN関数 | 中央値を取得する |
| MAXIFS関数 | 条件付きの最大値を取得する |
まとめ
LARGE関数は、データの中からN番目に大きい値を取り出す関数です。
=LARGE(配列, 順位)で大きい方からN番目の値を取得できる- 配列は絶対参照(
$)で固定するのがポイント - ROW関数やオートフィルと組み合わせると連番で一括取得できる
- 小さい方からN番目を取りたいならSMALL関数を使う
#NUM!エラーはデータ件数を超えた順位指定が原因
売上トップの抽出やテスト成績の上位確認など、実務でぜひ活用してみてください。
