Excel関数 逆引き集 | 下位n件平均 → AVERAGE+SMALL

Excel
スポンサーリンク

概要

「下位 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 の動きを思い出して考えてください。)

Excel
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました