概要
「下位 n 件の平均」を出したいときは、
小さい順に値を取り出す SMALL 関数と、平均を出す AVERAGE 関数を組み合わせます。
イメージはこうです。
「点数の低い方から n 個だけ抜き出す → その平均を AVERAGE で計算する」。
上位 n 件平均(AVERAGE+LARGE)の“逆バージョン”だと考えると分かりやすいです。
SMALL と AVERAGE の基本
SMALL 関数の基本
まずは「小さい順に取り出す」担当の SMALL から。
書式はこうです。
=SMALL(範囲, k)
範囲:点数や売上などのデータ範囲
k:小さいほうから何番目か(1=最小値、2=2 番目に小さい値…)
例:
=SMALL(A2:A11,1) ' 最小値
=SMALL(A2:A11,2) ' 下から2番目の値
=SMALL(A2:A11,3) ' 下から3番目の値
ここまでは「1 個だけ取り出す」イメージです。
AVERAGE 関数の基本
AVERAGE は、指定した値の平均を出します。
=AVERAGE(数値1, 数値2, …)
=AVERAGE(範囲)
例:
=AVERAGE(A2:A11) ' A2~A11 全部の平均
ここに「SMALL で抜き出した下位 n 個」を渡せば、「下位 n 件の平均」が作れます。
下位 n 件平均の基本パターン(配列版)
「下位 3 件の平均」の典型形
A2:A11 にテストの点数が 10 人分あるとして、
この中から「低い方から 3 人分の平均」を出したいとします。
式はこうなります。
=AVERAGE(SMALL(A2:A11,{1,2,3}))
ポイントは、SMALL の第 2 引数に {1,2,3} の「配列」を渡しているところです。
- SMALL(A2:A11,1) … 1 番目に小さい値(最小値)
- SMALL(A2:A11,2) … 2 番目に小さい値
- SMALL(A2:A11,3) … 3 番目に小さい値
この 3 つをセットで取り出して、そのまとまりを AVERAGE が平均しています。
動的配列対応の Excel なら、この形をそのまま 1 式で使えます。
下位 5 件の平均
同じ考え方で、下位 5 件の平均ならこうです。
=AVERAGE(SMALL(A2:A11,{1,2,3,4,5}))
範囲内に最低でも 5 件のデータがあることが前提になります。
n をセルで指定して柔軟にする
SEQUENCE と組み合わせる方法
「いつも {1,2,3,…} と手書きするのは面倒」
「そのときどきで n を変えたい」
そんなときは、SEQUENCE で「1〜n」の配列を自動生成するのが便利です。
たとえば、
- A2:A101 にテスト点数
- D1 に「何件分を平均するか(n)」
という前提なら、下位 n 件の平均は次のように書けます。
=AVERAGE(SMALL(A2:A101,SEQUENCE(D1)))
D1 = 3 のとき:SEQUENCE(D1) → {1;2;3}
D1 = 5 のとき:SEQUENCE(D1) → {1;2;3;4;5}
その配列を丸ごと SMALL の「k」として渡しているイメージです。
旧バージョン向け:配列数式として使う
Ctrl+Shift+Enter が必要なパターン
古い Excel(動的配列非対応)では、{1,2,3} のような配列を使った式は「配列数式」として入力する必要があります。
例:A2:A11 の下位 3 件平均
=AVERAGE(SMALL(A2:A11,{1,2,3}))
この式を入力したあと、
Enter ではなく Ctrl+Shift+Enter で確定します。
うまくいくと、数式バー上では
{=AVERAGE(SMALL(A2:A11,{1,2,3}))}
のように、式全体が波括弧 {} で囲まれて表示されます。
(この {} は自分で入力するものではなく、Excel が自動で付ける印です。)
実務でのイメージ
テストの「要フォロー層」の平均点
「クラス 30 人のテスト結果から、点数が低い方の 5 人の平均点を知りたい」
みたいなときに、そのまま使えます。
点数範囲が B2:B31 の場合:
=AVERAGE(SMALL(B2:B31,{1,2,3,4,5}))
あるいは、人数をセルで変えたいなら:
=AVERAGE(SMALL(B2:B31,SEQUENCE(D1)))
(D1 に「5」などの人数を入力)
これで、「下位 n 人の平均点」が一発で出せます。
売上の「低迷商品」の平均売上
「売上一覧から、売上金額が低い方の 10 商品の平均売上を見たい」
というときも、やることは同じです。
売上金額が C2:C101 の場合:
=AVERAGE(SMALL(C2:C101,SEQUENCE(10)))
n を変えるだけで、「下位 3 件」「下位 20 件」などにもすぐ変更できます。
エラーと注意点
データ数より大きい順位を指定するとどうなるか
例えば、A2:A6 に 5 件しかデータがないのに、
=SMALL(A2:A6,6)
のように「6 番目に小さい値」を求めようとすると、
存在しない順位を指定しているので #NUM! エラーになります。
同じように、
=AVERAGE(SMALL(A2:A6,{1,2,3,4,5,6}))
と書いた場合、
{1,2,3,4,5,6} のうち「6」がエラーになり、その扱いによって最終結果にも影響が出ます。
(実務では「n がデータ数以下になっているか」をあらかじめチェックしておくのがおすすめです。)
例題
問題1
A2:A11 に 10 人分のテスト点数が入っています。
この中から「下位 3 人の平均点」を求める式を、AVERAGE と SMALL を組み合わせて書いてください。
(ヒント:SMALL の第 2 引数に {1,2,3} を渡します)
問題2
B2:B31 に 30 人分のテスト点数が入っています。
この中から「点数の低い方 5 人の平均点」を求める式を書いてください。
(動的配列対応前提で、{1,2,3,4,5} をそのまま使って構いません)
問題3
C2:C101 に 100 商品分の売上が入っています。
下位何件を見るかをセル E1 に入力し、その件数分の「下位平均売上」を求めたいとします。
AVERAGE、SMALL、SEQUENCE を組み合わせた式を書いてください。
(ヒント:SMALL の第 2 引数に SEQUENCE(E1) を渡します)
問題4
次の式は何をしているか、初心者にも分かるように言葉で説明してください。
=AVERAGE(SMALL(D2:D21,{1,2,3,4}))
「どの範囲から」「どんな値を 4 つ取り出し」「それに対して何をしているのか」を説明してみてください。
問題5
範囲 A2:A6 には 5 個の点数が入っています。
次の式を実行するとどうなるか、結果と理由を答えてください。
=AVERAGE(SMALL(A2:A6,{1,2,3,4,5,6}))
(ヒント:6 番目に小さい値は存在するかどうか、SMALL の動きを思い出して考えてください。)
