LARGE関数・SMALL関数の使い方|大きい順・小さい順に◯番目の値を取り出す方法

売上表から「2番目に大きい金額」や「下から2番目の金額」を取り出したいことがあります。結論から言うと、LARGE関数は=LARGE(範囲,順位)で大きいほうから、SMALL関数は=SMALL(範囲,順位)で小さいほうから、指定した順位の値を取り出す関数です。この記事では2つの関数の基本と、上位の合計や名前の取り出し方を解説します。

目次

LARGE関数・SMALL関数の基本構文

次のような支店別の売上表(A1:B5)を例に見ていきます。

A(支店) B(売上)
2 東京 320,000
3 大阪 280,000
4 名古屋 195,000
5 福岡 150,000

A列=支店、B列=売上という対応を踏まえて、次のように書きます。

取り出したいもの 数式 結果
売上が1番大きい金額 =LARGE(B2:B5,1) 320,000(東京)
売上が2番目に大きい金額 =LARGE(B2:B5,2) 280,000(大阪)
売上が1番小さい金額 =SMALL(B2:B5,1) 150,000(福岡)
売上が2番目に小さい金額 =SMALL(B2:B5,2) 195,000(名古屋)

順位に1を指定したLARGEは最大値、SMALLは最小値と同じ結果になります。

LARGE関数で上位の合計や支店名を取り出す応用

上位3支店の売上合計は、順位を{1,2,3}のようにまとめて指定し、SUM関数で合計します。

=SUM(LARGE(B2:B5,{1,2,3}))

B列(売上)の上位3つは320,000・280,000・195,000なので、合計の「795,000」が返ります。SUM関数の基本はSUM関数の基本的な使い方|合計を計算する方法で解説しています。

1位の支店名を取り出すには、LARGEで求めた金額をMATCHで探し、INDEXでA列(支店)の値を返します。

=INDEX($A$2:$A$5,MATCH(LARGE($B$2:$B$5,1),$B$2:$B$5,0))

最大の320,000はB列の1行目にあるので、「東京」が返ります。INDEXとMATCHの組み合わせ方はINDEXとMATCHを組み合わせて柔軟に検索する方法を参照してください。

LARGE関数・SMALL関数のよくある注意点

  • 順位がデータの個数より大きいと#NUM!エラーになる: 上の表はデータが4件なので、=LARGE(B2:B5,5)は#NUM!になります。順位に0以下を指定した場合も同じです。対処法は#NUM!エラーの原因と対処法で解説しています。
  • 同じ値があると、同じ金額が続けて返る: たとえば売上が320,000・280,000・280,000・150,000なら、LARGE(範囲,2)もLARGE(範囲,3)も280,000を返します。INDEXとMATCHで支店名を取り出すと、どちらも上にある行の支店名になる点に注意しましょう。
  • 順位そのものを付けたいときはRANK関数: 「この支店は何位か」を表示したい場合は、RANK関数で同順位を考慮した順位付けをする方法で紹介しているRANK関数が向いています。

LARGE関数・SMALL関数が登場する記事

LARGE関数・SMALL関数の使い方まとめ

LARGE関数は大きいほうから、SMALL関数は小さいほうから、指定した順位の値を取り出します。SUMと組み合わせれば上位の合計、INDEXとMATCHと組み合わせれば順位に対応する名前も取り出せます。データの真ん中の値(中央値)を条件付きで求めたい場合は、サイトの人気記事エクセル関数で条件付きで中央値(MEDIAN)を計算する方法もあわせてご覧ください。

目次