• 作成日 : 2025年8月25日

LARGE関数の使い方:エクセルで上位n番目の値を抽出する方法

LARGE関数は、データセットから指定した順位の大きい値を抽出するエクセルの統計関数です。最大値だけでなく、2番目、3番目に大きい値など、任意の順位の値を簡単に取得できます。売上ランキングの作成、成績上位者の抽出、品質管理での異常値検出、在庫管理での重点商品の特定など、様々なビジネスシーンで活用されています。本記事では、LARGE関数の基本的な使い方から実務での応用例、SMALL関数との使い分け、動的なランキング作成方法、配列数式での活用、そしてよくあるエラーとその解決方法まで、初心者にも分かりやすく解説します。

LARGE関数の使い方

LARGE関数とは

LARGE関数は、指定したデータ範囲の中から、大きい方から数えて指定した順位の値を返す関数です。単純に最大値を求めるMAX関数とは異なり、2番目に大きい値、3番目に大きい値といった、任意の順位の値を柔軟に取得できる点が特徴です。この機能により、上位データの分析やランキング作成などに活用しやすい関数です。

たとえば、営業成績の上位5名を表彰したい場合や、売上高上位10商品を特定したい場合など、最大値だけでは足りないケースにも対応できます。

基本構文

LARGE関数の構文は次のとおりです。

=LARGE(配列, k)

各引数について詳しく説明します。

  • 配列:順位を求めたい数値データの範囲を指定します。セル範囲、配列定数、名前付き範囲などが使用できます。文字列や論理値は無視されます。
  • k:取得したい順位を指定します。1を指定すると最大値、2を指定すると2番目に大きい値が返されます。正の整数を指定する必要があります。

LARGE関数の動作原理

LARGE関数は以下の手順で値を決定します。

  1. 指定された範囲から数値データのみを抽出
  2. 数値を降順(大きい順)に並べ替え
  3. 指定された順位(k)の値を返す
  4. 同じ値が複数ある場合も、それぞれ別の順位として扱う

この動作を理解することで、結果の解釈が正確になります。

基本的な使用例

実際にLARGE関数を使用してみましょう。

データ:85, 92, 78, 95, 88, 91, 82, 90

=LARGE(A1:A8, 1)  // 結果:95(最大値)

=LARGE(A1:A8, 2)  // 結果:92(2番目に大きい値)

=LARGE(A1:A8, 3)  // 結果:91(3番目に大きい値)

複数の範囲をまとめて上位を求める場合:

(Microsoft 365 以降)

=LARGE(VSTACK(A1:A10, C1:C10), 1) // 2つの範囲を縦結合して最大値

(従来版Excel:配列数式として入力)

=LARGE(CHOOSE({1,2}, A1:A10, C1:C10), 1) // Ctrl+Shift+Enterで確定

※最大値だけでよい場合は =MAX(A1:A10, C1:C10) が簡単です。

セル参照で順位を指定する場合:

B1セルに順位(例:5)が入力されている場合

=LARGE(A:A, B1)  // 5番目に大きい値を返す

MAX関数との違い

MAX関数は最大値のみを返しますが、LARGE関数はより柔軟です。

=MAX(A1:A10)      // 最大値のみ

=LARGE(A1:A10, 1) // 同じ結果だが、順位を変更可能

上位3つの値の合計を求める場合:

=LARGE(A1:A10, 1) + LARGE(A1:A10, 2) + LARGE(A1:A10, 3)

LARGE関数の利用シーン

売上ランキングの作成

営業データから上位の成績を抽出する最も一般的な用途です。

月間売上高トップ10の抽出:

1位:=LARGE(売上データ!B:B, 1)

2位:=LARGE(売上データ!B:B, 2)

10位:=LARGE(売上データ!B:B, 10)

売上高と担当者名を対応させる:

=INDEX(担当者名, MATCH(LARGE(売上高, 1), 売上高, 0))

上位20%の売上高の境界値:

=LARGE(売上データ, ROUNDUP(COUNT(売上データ)*0.2, 0))

成績評価と表彰者の選定

試験の成績や評価データから上位者を特定します。

試験成績上位5名の点数:

=LARGE(点数データ, ROW(1:5))  // 配列数式として入力

上位10%に入るための最低点:

=LARGE(成績データ, ROUNDUP(COUNT(成績データ)*0.1, 0))

学年別の最高点:

=LARGE(IF(学年=1, 点数データ), 1)  // 1年生の最高点

品質管理での異常値検出

製造データから異常に大きい値を検出します。

測定値の上位5つを異常値候補として抽出:

異常値1:=LARGE(測定値データ, 1)

異常値2:=LARGE(測定値データ, 2)

異常値5:=LARGE(測定値データ, 5)

上位1%を異常値として判定:

=IF(A1>=LARGE(全データ, ROUNDUP(COUNT(全データ)*0.01, 0)), “異常値”, “正常”)

在庫管理での重点商品特定

売れ筋商品や在庫回転率の高い商品を特定します。

売上個数トップ20商品の抽出:

=LARGE(売上個数データ, SEQUENCE(20))  // Excel 365の場合

在庫金額上位商品の特定:

=LARGE(在庫数量*単価, ROW($1:$10))

給与・報酬分析

給与データの分析で高額所得者の把握に使用します。

部門別最高給与:

=LARGE(IF(部門=”営業”, 給与データ), 1)

給与上位5%のボーダーライン:

=LARGE(給与データ, ROUNDUP(COUNT(給与データ)*0.05, 0))

LARGE関数の応用・他関数との組み合わせ

SMALL関数との併用

上位と下位の両方を分析する場合に組み合わせます。

最大値:=LARGE(A:A, 1)

最小値:=SMALL(A:A, 1)

範囲:=LARGE(A:A, 1) – SMALL(A:A, 1)

上位下位を除いた平均(トリム平均):

=AVERAGE(IF((A:A<LARGE(A:A,3))*(A:A>SMALL(A:A,3)), A:A))

INDEX/MATCH関数との組み合わせ

順位に対応する他の情報を取得します。

売上1位の商品名を取得:

=INDEX(商品名, MATCH(LARGE(売上高, 1), 売上高, 0))

上位5商品の一覧作成:

順位1:=INDEX(商品名, MATCH(LARGE(売上高, ROW(A1)), 売上高, 0)) // 下方向にコピー

(Microsoft 365 の場合は 1式で)=TAKE(SORTBY(商品名, 売上高, -1), 5)

ROW関数での動的順位指定

連続した順位を自動生成します。

=LARGE($A$1:$A$100, ROW(A1))  // 下にコピーすると順位が増加

上位n件の動的な抽出:

(下方向にコピーする場合)=IF(ROW(A1)<=表示件数, LARGE(データ範囲, ROW(A1)), “”)

(Microsoft 365 のスピル)=LARGE(データ範囲, SEQUENCE(表示件数))

条件付きで上位の値を取得(LARGE)

  • 特定カテゴリ内の上位値:
    (Microsoft 365)=LARGE(FILTER(数値データ, カテゴリ=”A”), 3)
    (従来版Excel:配列数式)=LARGE(IF(カテゴリ=”A”, 数値データ), 3) // Ctrl+Shift+Enter
  • 期間限定での上位値:
    (Microsoft 365)=LARGE(FILTER(売上データ, (日付>=開始日)(日付<=終了日)), 1)
    (従来版Excel:配列数式)=LARGE(IF((日付>=開始日)(日付<=終了日), 売上データ), 1) // Ctrl+Shift+Enter

SUMPRODUCTで条件付きの順位(ランク番号)を求める

  • 同一カテゴリ内で「対象値」の順位(大きい順):
    =1+SUMPRODUCT( (カテゴリ=対象カテゴリ) * (数値データ>対象値) )
  • 期間条件付きで「対象値」の順位(大きい順):
    =1+SUMPRODUCT( (日付>=開始日) * (日付<=終了日) * (売上データ>対象値) )
    ※「対象カテゴリ」「対象値」はセル参照に置き換えて使用します(例:対象カテゴリ=E2、対象値=F2)。
    (Microsoft 365の別解)=RANK.EQ(対象値, FILTER(数値データ, カテゴリ=対象カテゴリ), 0)

配列数式での一括取得

複数の順位を一度に取得します。

上位10件を縦に並べる:

{=LARGE(データ範囲, ROW(1:10))}  // Ctrl+Shift+Enter

上位5件を横に並べる:

{=LARGE(データ範囲, COLUMN(A:E))}  // Ctrl+Shift+Enter

動的な上位n%の抽出

データ数に応じて自動的に上位の境界を決定します。

上位10%の境界値:

=LARGE(データ範囲, ROUNDUP(COUNT(データ範囲)*0.1, 0))

該当判定:

=IF(A1>=LARGE(データ範囲, ROUNDUP(COUNT(データ範囲)*0.1, 0)), “上位10%”, “”)

RANK関数との相互活用

LARGEで値を取得し、RANKで順位を確認します。

特定値の順位:=RANK(A1, データ範囲, 0)

その順位の値:=LARGE(データ範囲, RANK(A1, データ範囲, 0))

LARGE関数のよくあるエラーと対策

#NUM!エラーの原因と対処

#NUM!エラーは、よく発生するエラーですが、主に以下の原因があります。

原因1:kが範囲内の数値の個数を超えている

データ数:10個

=LARGE(A1:A10, 11)  // エラー:11番目は存在しない

対策

=IF(B1<=COUNT(A:A), LARGE(A:A, B1), “順位が範囲外”)

原因2:kが0以下の値

=LARGE(A1:A10, 0)   // エラー

=LARGE(A1:A10, -1)  // エラー

対策

=IF(B1>0, LARGE(A:A, B1), “順位は1以上を指定”)

#VALUE!エラーの対処

引数の型が不適切な場合に発生します。

=LARGE(A1:A10, “三”)  // エラー:文字列は不可

対策

=IFERROR(LARGE(A:A, B1), “数値を入力してください”)

空白セルと文字列の扱い

LARGE関数は空白セルと文字列を無視しますが、0は数値として扱います。

0を除外する場合:

{=LARGE(IF(A:A<>0, A:A), 1)}  // 配列数式

エラー値を含む場合の対処:

{=LARGE(IF(NOT(ISERROR(A:A)), A:A), 1)}

重複値の扱い

同じ値が複数ある場合、それぞれ別の順位として扱われます。

データ:100, 90, 90, 80

=LARGE(A1:A4, 2)  // 結果:90

=LARGE(A1:A4, 3)  // 結果:90(同じ値)

ユニークな値のみを対象にする場合:

=LARGE(UNIQUE(A:A), 2)  // Excel 365の場合

パフォーマンスの最適化

大量データで複数のLARGE関数を使用すると処理が重くなります。

効率化の方法
  1. 必要な範囲のみを指定
  2. 一度ソートしてからINDEX関数を使用
  3. ヘルパー列で事前に順位を計算

// 非効率

=LARGE(A:A, 1) + LARGE(A:A, 2) + … + LARGE(A:A, 10)

// 効率的(ヘルパー列使用)

B1:=LARGE($A:$A, ROW(A1)) // 下方向にコピー

合計:=SUM(B1:B10)

(Microsoft 365 の場合、1式で)=SUM(LARGE($A:$A, SEQUENCE(10)))

動的範囲での注意点

データ範囲が変動する場合の対処法:

(Microsoft 365)=LARGE(FILTER(A:A, A:A<>””), 1) // 空白を除いて動的に抽出

(従来版Excel・数値列想定)=LARGE(A$2:INDEX(A:A, MATCH(9.999E+307, A:A)), 1) // 見出しがA1の場合はA$2から開始

テーブル機能を使用:

=LARGE(テーブル1[売上], 1)  // 自動的に範囲が調整される

LARGE関数を使って上位データを効率的に抽出しよう

LARGE関数は、データセットから任意の順位の大きい値を抽出できる実用的な関数です。売上ランキング、成績上位者の特定、品質管理での異常値検出など、業務で幅広く利用できます。

SMALL関数と組み合わせることで上位下位の分析が可能になり、INDEX/MATCH関数との連携で、順位に対応する詳細情報も取得できます。

順位がデータ数を超えないよう注意し、必要に応じて条件付き抽出や動的な範囲指定を活用することで、より実践的なデータ分析が可能になります。


※ 掲載している情報は記事更新時点のものです。

※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。

関連記事