第68回 LARGE関数で上位N件を自動取得する

関数・自動化

前回はランキングシートを別シートに作る設計思想と、全体の準備について解説しました。今回からいよいよ関数を組み立てていきます。まずはLARGE関数で上位N件の数値を自動取得する仕組みを作ります。

「LAR…なんですか?」と思った方もご安心ください。LARGE関数は引数が2つだけのシンプルな関数です。「リストの中で〇番目に大きい値はいくつか」を返す——それだけです。ランキングの「1位の値」「2位の値」「3位の値」を取り出すのにぴったりです。

LARGE関数の基本:引数は2つだけ

📝 LARGE関数の構造
=LARGE(範囲, 順位)
引数 意味
範囲 「何番目か」を調べたい数値の一覧 年間(野手)シートの打率列
順位 「大きいほうから何番目の値がほしいか」 1(1位)・2(2位)・3(3位)…

要するに「このリストの中で、大きいほうから〇番目の数字を教えて」という関数です。

具体例で確認しましょう。打点の列に次のような数値が並んでいるとします。

選手名 打点
SUZUKI 6
OKADA 5
NAKATA 5
YAMAMOTO 4
SAKAI 4
(以下 4・4・3・3・3 と続く)

この打点列に対して LARGE を使うとこうなります。

✅ LARGE関数の動作例(打点ランキング)
結果 意味
=LARGE(打点の列, 1) 6 最も多い打点は6(SUZUKIさん)
=LARGE(打点の列, 2) 5 2番目に多い打点は5(OKADAさん・NAKATA)
=LARGE(打点の列, 3) 5 3番目も5(2位と同値のため)
=LARGE(打点の列, 4) 4 4番目は4(YAMAMOTO・SAKAIほか)

同じ値が複数いる場合(打点5が2人)、LARGE は同じ値を2位・3位として返します。「誰が2位か」は次回のINDEX・MATCHで取り出します。

実際にランキングシートへ入力する式

年間(野手)シートのシート名は「年間(野手)」、打点はI列(I:I)に入っています。ランキングシートのA列に順位(A3セルに 1、A4に 2、A5に 3…)が入っているとして、打点1位の値を取り出す式はこうなります。

打点ランキング(1位〜3位)の式
=LARGE('年間(野手)'!I:I, A3)   ← 1位(A3=1)
=LARGE('年間(野手)'!I:I, A4)   ← 2位(A4=2)
=LARGE('年間(野手)'!I:I, A5)   ← 3位(A5=3)

A列の順位番号(1・2・3)を第2引数に使うことで、コピーするだけで2位・3位の式が自動で完成します。A3に 1、A4に 2 … と順位番号を手入力しておくのがポイントです。

打率ランキング(1位〜5位)の式
=LARGE('年間(野手)'!D:D, A3)   ← 1位
=LARGE('年間(野手)'!D:D, A4)   ← 2位
=LARGE('年間(野手)'!D:D, A5)   ← 3位
=LARGE('年間(野手)'!D:D, A6)   ← 4位
=LARGE('年間(野手)'!D:D, A7)   ← 5位

打率はD列です。第2引数をA列の順位番号にしておけば、1位の式をコピーするだけで2〜5位が完成します。

本塁打ランキングの式
=LARGE('年間(野手)'!H:H, E3)   ← 本塁打ブロックの順位列をE列とした場合

本塁打はH列です。ブロックごとに参照する順位番号の列が変わる点に注意してください(第67回で決めたレイアウトに合わせます)。

LARGE関数を入れた結果を実データで確認する

実際のデータでLARGEの結果がどうなるか確認しましょう。

順位 打率(LARGE結果) 打点(LARGE結果) 本塁打(LARGE結果)
1位 .636 6 1
2位 .368 5 1
3位 .368 5 1
4位 .357 4 0
5位 .318 4 0

打率の2位と3位はともに .368(S.TANAKAさんとNAKATA)、打点の2位と3位はともに 5(OKADAさんとNAKATA)、本塁打の1〜3位はすべて 1——同率がいくつかあります。LARGE はこのような同率をそのまま正直に返してくれます。

この時点で「数値は取れた、でも選手名がない」という状態です。次のステップは、この値から「それは誰の成績か」を引っ張ってくることです。それが次回解説するINDEX・MATCHの役割です。

「第2引数をセル参照にする」のがコピーを楽にするコツ

ここで一つ重要なテクニックを確認しておきます。LARGE関数の第2引数(順位)の書き方には2通りあります。

📝 第2引数の書き方の違い:数値直書き vs セル参照
書き方 式の例 コピーしたとき
数値を直接書く =LARGE(D:D, 1) 下の行にコピーしても「1」のまま変わらない ❌
2位・3位は手で書き直しが必要
順位のセルを参照する =LARGE(D:D, A3) 下にコピーするとA4・A5…に自動で変わる ✅
A列に 1・2・3 と入力しておけば2位・3位も完成

A列の順位番号(1・2・3・4・5)は手入力します。その番号をLARGEの第2引数で参照することで、1位の式を下にコピーするだけで2〜5位が自動完成します。

LARGE関数が使えない(エラーになる)パターン

⚠️ 知っておきたいLARGEのエラーパターン
パターン①:順位が範囲内のデータ数を超えている

選手が10人しかいないのに =LARGE(D:D, 11) とすると #NUM! エラーになります。ランキングを10位まで表示する場合、データが10件以上あることを確認してください。

パターン②:範囲に文字列や空白が混じっている

LARGE は数値だけを対象にします。列全体(D:D)を指定する場合、ヘッダー行の「打率」という文字はスキャンされても無視されます。問題は起きません。

パターン③:打率が 0 の未出場選手がランキングに入ってしまう

未出場選手の打率は 0 です。LARGE(D:D, 10) のように深い順位を取り出すと「0」がランキングに並ぶことがあります。これは打率ランキング特有の問題で、規定打席以上のみを対象にする条件を加える必要があります。打率ランキングの扱いは次々回(第70回)で詳しく解説します。打点・本塁打・盗塁など「0でも出場している選手の実績」を表す指標は、とりあえずこのままで問題ありません。

ここまでの完成状態を整理する

この回が終わった時点で、ランキングシートには「順位の数値」だけが並んでいる状態になります。

✅ 第68回終了時点のランキングシートの状態
順位 選手名 打率
1 (まだ空欄) .636 ✅
2 (まだ空欄) .368 ✅
3 (まだ空欄) .368 ✅
4 (まだ空欄) .357 ✅
5 (まだ空欄) .318 ✅

「数値は取れたが選手名が空欄」——これが今回の完成形です。次回のINDEX・MATCHで選手名の列を埋めてランキングシートが完成します。

✅ この記事のまとめ
  • LARGE関数は =LARGE(範囲, 順位) の2引数だけ——「このリストで〇番目に大きい値はいくつか」を返す
  • 第2引数(順位)に順位番号が入ったセル(A3・A4…)を参照すると、コピーするだけで2位・3位の式が自動完成する
  • 同率は正直にそのまま返す(打点5が2人いれば2位も3位も「5」)——「誰が2位か」はINDEX・MATCHで解決する
  • この時点でランキングシートには数値だけが並んでいる状態。選手名の列は次回埋める
  • 打率ランキングは「未出場者の 0 が混入する」問題があるため、規定打席条件は第70回で対処する

次回予告

次回は「INDEX・MATCHで選手名とセットで表示する」。LARGE で取り出した「1位の打率の値」が年間(野手)シートの何行目にあるかをMATCHで探し、その行の選手名をINDEXで取り出す——この組み合わせでランキングの選手名列を完成させます。

▶︎ 次回:【第69回】INDEX・MATCHで選手名とセットで表示する

コメント

タイトルとURLをコピーしました