概要
「上位 n 件の平均」を出したいときは、
大きい順に値を取り出す LARGE 関数と、平均を出す AVERAGE 関数を組み合わせます。
イメージはこうです。
「点数の高い順に n 個だけ抜き出す → その平均を AVERAGE で計算する」。
基本の考え方(LARGE と AVERAGE)
LARGE 関数の基本
まずは「大きい順に取り出す」担当の LARGE から。
=LARGE(範囲, k)
範囲:点数や売上などのデータ範囲
k:何番目に大きい値か(1=最大、2=2番目に大きい…)
例:
=LARGE(A2:A11,1) ' 最大値
=LARGE(A2:A11,2) ' 2番目に大きい値
=LARGE(A2:A11,3) ' 3番目に大きい値
ここまでは「1 個だけ取り出す」イメージです。
AVERAGE 関数の基本
AVERAGE は指定した値の平均を出します。
=AVERAGE(数値1, 数値2, …)
=AVERAGE(範囲)
例:
=AVERAGE(A2:A11) ' A2~A11 全部の平均
上位 n 件平均の基本パターン(配列版)
「上位 3 件の平均」の典型形
例えば、A2:A11 にテストの点数が 10 人分あるとして、
その中から「高い順に 3 人分の平均」を出す式はこうなります。
=AVERAGE(LARGE(A2:A11,{1,2,3}))
ポイントは、LARGE の第 2 引数に {1,2,3} の「配列」を渡していることです。
- LARGE(A2:A11,1) … 1 番目に大きい値
- LARGE(A2:A11,2) … 2 番目に大きい値
- LARGE(A2:A11,3) … 3 番目に大きい値
この 3 つをまとめて渡して、そのセットを AVERAGE が平均しているイメージです。
Excel の新しいバージョン(動的配列対応)なら、そのまま 1 式で動きます。
上位 5 件の平均
同じ考え方で、上位 5 件ならこうです。
=AVERAGE(LARGE(A2:A11,{1,2,3,4,5}))
範囲内に 5 件以上のデータがあることが前提です。
n をセルで指定して上位 n 件平均
SEQUENCE と組み合わせる方法
「毎回 {1,2,3,…} と手書きするのは面倒」「n を変えたい」
そんなときは、SEQUENCE で「1〜n」配列を自動生成するのが便利です。
例えば、
A2:A101 に点数、
D1 に「何件分を平均するか(n)」が入っているとします。
上位 n 件の平均は次のように書けます。
=AVERAGE(LARGE(A2:A101,SEQUENCE(D1)))
D1 = 3 なら SEQUENCE(D1) → {1;2;3}
D1 = 5 なら SEQUENCE(D1) → {1;2;3;4;5}
その配列をそのまま LARGE の「k」として使っているイメージです。
旧バージョン向けテクニック(配列数式)
手入力の配列数式(Ctrl+Shift+Enter)
古い Excel(動的配列非対応)では、{1,2,3} のような配列を使う式を「配列数式」として確定する必要があります。
例:A2:A11 の上位 3 件平均
=AVERAGE(LARGE(A2:A11,{1,2,3}))
この式を入力したあと、
Enter ではなく Ctrl+Shift+Enter で確定すると、
数式バー上で {=AVERAGE(LARGE(A2:A11,{1,2,3}))} のように見える状態になります。
(波括弧 {} は自分で打たず、Ctrl+Shift+Enter で Excel に付けさせるものです。)
実務でのイメージ
テストの上位成績者の平均点
「クラス 30 人のテスト結果から、上位 5 人の平均点を出したい」
といったシーンでは、次のような式になります。
点数の範囲が B2:B31 の場合:
=AVERAGE(LARGE(B2:B31,{1,2,3,4,5}))
あるいは、上位人数をセルで変えたいなら:
=AVERAGE(LARGE(B2:B31,SEQUENCE(D1)))
(D1 に「5」などの人数を入力)
売上上位商品の平均売上
「売上一覧から、売上金額上位 10 商品の平均売上を知りたい」
というときも同じです。
売上金額が C2:C101 の場合:
=AVERAGE(LARGE(C2:C101,SEQUENCE(10)))
n を変えれば、上位 3 件・上位 20 件などにも即対応できます。
例題
問題1
A2:A11 に 10 人分のテスト点数が入っています。
この中から「上位 3 人の平均点」を求める式を、AVERAGE と LARGE を組み合わせて書いてください。
(ヒント:LARGE の第 2 引数には {1,2,3} を使います)
問題2
B2:B31 に 30 人分のテスト点数が入っています。
上位 5 人の平均点を求める式を書いてください。
(動的配列が使える前提で、{1,2,3,4,5} をそのまま書いて構いません)
問題3
C2:C101 に商品 100 件分の売上が入っています。
上位何件を見るかをセル E1 に入力し、その件数分の上位平均売上を求めたいとします。
AVERAGE、LARGE、SEQUENCE を組み合わせた式を書いてください。
(ヒント:LARGE の第 2 引数に SEQUENCE(E1) を渡します)
問題4
次の式が何をしているのか、言葉で説明してください。
=AVERAGE(LARGE(D2:D21,{1,2,3,4}))
「どの範囲のどの値を取り出し、それらに何をしているのか」を、
初心者にも伝わるように説明してみてください。
問題5
範囲 A2:A6 に 5 個の点数が入っています。
次の式を実行するとどうなるか、結果とその理由を答えてください。
=AVERAGE(LARGE(A2:A6,{1,2,3,4,5,6}))
(ヒント:データ数より多い順位(6番目)が指定されているとき、LARGE はどう振る舞うかを考えます)
