「テストで80点を取ったけど、全体の中でどのくらいの位置にいるんだろう?」。こんな疑問を感じたことはありませんか?
平均と自分のスコアだけでは、相対的な立ち位置が見えません。偏差値を手計算するのも面倒ですよね。
そんなときに使うのがNORM.DIST関数です。この記事ではGoogleスプレッドシートでのNORM.DIST関数の使い方を、基本構文から実務活用まで解説します。TRUE/FALSEの違いや、AVERAGE・STDEV関数との連携ワークフローもあわせて紹介しますよ。
NORM.DIST関数とは
NORM.DIST関数(読み方: ノーム・ディスト関数)は、正規分布にもとづいて確率を返す関数です。正規分布とは、データが平均値を中心に左右対称の釣鐘型に分布するモデルです。「NORM」は「Normal(正規)」、「DIST」は「Distribution(分布)」の略です。
たとえば「平均60点・標準偏差10点のテストで80点以下の人は全体の何%か」を1つの数式で求められます。
NORM.DIST関数にできることをまとめると、次のとおりです。
- ある値が全体の何%に位置するかを求める(累積確率)
- 正規分布グラフ上の密度(高さ)を取得する
- 品質管理で規格内に収まる製品の割合を計算する
- 成績やKPIの相対的な位置づけを数値化する
NOTE
NORM.DIST関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、動作は同じです。
基本構文と4つの引数
=NORM.DIST(値, 平均, 標準偏差, 累積)
カッコの中に4つの引数を指定します。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値(x) | 必須 | 確率を求めたい数値 |
| 平均(mean) | 必須 | 分布の平均値 |
| 標準偏差(standard_deviation) | 必須 | 分布の標準偏差(0より大きい値) |
| 累積(cumulative) | 必須 | TRUEで累積分布、FALSEで確率密度 |
TIP
標準偏差(データの散らばり具合を表す指標)に0以下を指定すると
#NUM!エラーになります。数値以外を指定すると#VALUE!エラーです。
NORMDIST(旧関数名)との関係
GoogleスプレッドシートにはNORMDISTという関数もあります。これはNORM.DISTの旧バージョンで、計算結果は同じです。
=NORMDIST(80, 60, 10, TRUE) ← 旧関数名(動作は同じ)
=NORM.DIST(80, 60, 10, TRUE) ← 新関数名(推奨)
どちらを使っても問題ありませんが、Googleの公式ドキュメントではNORM.DISTが推奨されています。新しく数式を書くときはNORM.DISTを使いましょう。
TRUE/FALSEで何が変わる?累積か密度かを選ぼう
NORM.DIST関数の4番目の引数「累積」は、TRUEかFALSEで結果がまったく変わります。この違いを押さえておくことが、NORM.DIST関数を使いこなすポイントです。
TRUE(累積分布関数)——x以下は全体の何%?
TRUEを指定すると累積分布関数(CDF: ある値以下になる確率の合計)の値を返します。実務で使う場面のほとんどがこちらです。
=NORM.DIST(80, 60, 10, TRUE)
この数式は「平均60・標準偏差10の正規分布で、80以下になる確率」を返します。結果は約0.9772(97.7%) です。
つまり80点以下の人が全体の約97.7%を占めるということです。逆にいえば、80点を超えるのは上位約2.3%ですね。
FALSE(確率密度関数)——その値の密度は?
FALSEを指定すると確率密度関数(PDF: 正規分布グラフ上のy座標の値)を返します。
=NORM.DIST(80, 60, 10, FALSE)
結果は約0.0054です。これは「確率」ではなくグラフの高さなので、直接「何%」と読むことはできません。正規分布のグラフを描くときに使います。
2つを比較してみる(サンプルデータつき)
平均60・標準偏差10の正規分布で、値を変えたときの結果を比べてみましょう。
| 値(x) | TRUE(累積確率) | FALSE(確率密度) |
|---|---|---|
| 40 | 0.0228(2.3%) | 0.0054 |
| 50 | 0.1587(15.9%) | 0.0242 |
| 60 | 0.5000(50.0%) | 0.0399 |
| 70 | 0.8413(84.1%) | 0.0242 |
| 80 | 0.9772(97.7%) | 0.0054 |
TRUEの列は値が大きくなるほど1に近づいていきます。FALSEの列は平均値(60)で最大になり、離れるほど小さくなります。
実務では「x以下の確率を知りたい」場面がほとんどなので、TRUEを使うケースが圧倒的に多いですよ。
実務活用3パターン
NORM.DIST関数の基本がわかったところで、実際の業務で使えるパターンを3つ紹介します。
成績分析——自分のスコアが上位何%かを計算
テストや資格試験の結果から、自分の相対的な位置を知りたいときに使えます。
たとえば平均点が65点、標準偏差が12点の試験で82点を取った場合です。
=NORM.DIST(82, 65, 12, TRUE)
結果は約0.9222(92.2%) です。82点以下が全体の92.2%なので、上位約7.8%に入っていることがわかります。
「上位何%か」を直接求めたいときは、次のように書きます。
=1 - NORM.DIST(82, 65, 12, TRUE)
結果は約0.0778、つまり上位7.8%です。チームの成績分析やKPI評価にも応用できますよ。
品質管理——規格範囲内の製品比率を求める
製造業では「規格の上限と下限の間に収まる製品の割合」を計算する場面があります。
たとえば、部品の長さが平均50mm・標準偏差0.5mmで、規格が49mm~51mmの場合です。
=NORM.DIST(51, 50, 0.5, TRUE) - NORM.DIST(49, 50, 0.5, TRUE)
結果は約0.9545(95.4%) です。規格内に収まる製品が約95.4%だとわかります。
「上限以下の確率」から「下限以下の確率」を引くことで、範囲内の確率を求めるテクニックです。品質管理の報告資料などで活躍してくれますよ。
人事評価——評価点の相対位置を可視化する
人事評価のスコアを相対的に比較したい場面でも便利です。
たとえば評価スコアの平均が3.2、標準偏差が0.6のチームで、ある社員のスコアが4.0だった場合です。
=NORM.DIST(4.0, 3.2, 0.6, TRUE)
結果は約0.9088(90.9%) です。この社員のスコアは全体の上位約9%に位置することがわかります。
全員分のスコアに対してNORM.DIST関数を適用すれば、パーセンタイル(百分位数)の一覧表を作れます。評価の偏りや分布を可視化したいときに試してみてください。
AVERAGE・STDEV関数との連携ワークフロー
NORM.DIST関数を使うには、平均と標準偏差が必要です。手入力してもよいのですが、AVERAGE関数とSTDEV関数を組み合わせると、データが更新されても自動で再計算されます。
実際のワークフローを見てみましょう。テストの点数がB2:B31に入っているとします。
ステップ1: 平均を求める
=AVERAGE(B2:B31)
ステップ2: 標準偏差を求める
=STDEV(B2:B31)
ステップ3: NORM.DIST関数で確率を求める
=NORM.DIST(80, AVERAGE(B2:B31), STDEV(B2:B31), TRUE)
このように数式をネスト(入れ子に)すれば、データを追加・変更しても自動で結果が更新されます。平均や標準偏差を別セルに出しておいて、そのセルを参照する方法でもOKですよ。
TIP
データが母集団(全数データ)の場合は、STDEVの代わりにSTDEV.Pを使いましょう。STDEVは標本標準偏差、STDEV.Pは母集団の標準偏差を返します。
正規分布関数ファミリーの使い分け
Googleスプレッドシートには、正規分布に関連する関数がいくつかあります。それぞれの役割を整理しておきましょう。
NORM.DIST / GAUSS / PHI / STANDARDIZE の違い
| 関数 | 用途 | 特徴 |
|---|---|---|
| NORM.DIST | 任意の平均・標準偏差の正規分布で確率を求める | 最も汎用的。実務のメイン関数 |
| NORM.S.DIST | 標準正規分布(平均0・標準偏差1)で確率を求める | NORM.DIST(x,0,1,TRUE)と同じ結果 |
| NORM.INV | 確率から値を逆算する | NORM.DISTの逆関数。上位10%のボーダーライン算出に便利 |
| GAUSS | 平均から±xσの間の確率を求める | GAUSS(x) = NORM.S.DIST(x,TRUE) – 0.5 |
| PHI | 標準正規分布の確率密度を返す | PHI(x) = NORM.S.DIST(x,FALSE) |
| STANDARDIZE | 値を標準化(zスコアに変換)する | (x – 平均) / 標準偏差 の計算を関数化 |
使い分けのポイントはシンプルです。
- 確率を知りたい → NORM.DIST(平均・標準偏差がわかっているとき)
- 標準正規分布だけでOK → NORM.S.DIST(すでにzスコアに変換済みのとき)
- 確率から値を逆算したい → NORM.INV(ボーダーラインの算出)
- データを標準化したい → STANDARDIZE
迷ったらNORM.DISTを使えばほとんどの場面に対応できますよ。
よくある間違いと注意点
NORM.DIST関数でつまずきやすいポイントをまとめました。
標準偏差に0以下を指定して#NUM!エラー
標準偏差は「0より大きい値」でなければなりません。0を指定すると#NUM!エラーになります。データが全部同じ値のときSTDEV関数は0を返すので、その結果をそのまま渡さないように注意してください。
=NORM.DIST(80, 60, 0, TRUE) ← #NUM! エラー
引数に文字列を渡して#VALUE!エラー
数値であるべき引数にテキストが入ると#VALUE!エラーになります。セル参照を使うときは、参照先が数値であることを確認しましょう。
TRUE/FALSEの指定を間違える
4番目の引数を省略することはできません。TRUEとFALSEでは結果がまったく異なります。「x以下の確率」を求めたいのにFALSEを指定すると、意味のない密度値が返ってきます。目的に合った値を選んでくださいね。
「x以上」の確率を求めるときの計算
NORM.DIST関数は「x以下」の確率を返します。「x以上」の確率が欲しいときは、1から引く必要があります。
=1 - NORM.DIST(80, 60, 10, TRUE)
正規分布を仮定してよいか確認する
NORM.DIST関数は、データが正規分布に従うことを前提とした計算です。極端に偏ったデータには正確な結果を返しません。データの分布が正規分布から大きくずれていないか、SKEW関数で歪度を確認しておくとより安心ですよ。
まとめ
NORM.DIST関数は、正規分布にもとづいて確率を求める関数です。
- 4番目の引数にTRUEを指定すると「x以下の確率」が返る
- FALSEを指定するとグラフの密度値が返る(実務ではTRUEが主役)
- AVERAGE関数とSTDEV関数と組み合わせるのが基本の使い方
- 成績分析・品質管理・人事評価など幅広い場面で活用できる
- 標準偏差に0以下を渡すと
#NUM!エラー。STDEV関数と組み合わせるときは注意しよう - 関連関数として、逆算したい場合はNORM.INV、標準化にはSTANDARDIZEが便利
「このスコアは全体のどのあたり?」を数値で答えられるようになると、データ分析の幅がぐっと広がります。ぜひ実際のデータで試してみてくださいね。
