「Excelで使っていたNORMDIST関数、スプレッドシートでも同じように使えるのかな?」。ExcelからGoogleスプレッドシートへ移行したときに気になるポイントですよね。
結論から言うと、NORMDIST関数はGoogleスプレッドシートでもそのまま使えます。ただし、現在はNORM.DISTという新しい名前の関数が推奨されています。この記事ではスプレッドシートのNORMDIST関数の使い方を、NORM.DISTとの違いや移行時のポイントとあわせて解説します。
NORMDIST関数とは
NORMDIST関数(読み方: ノーム・ディスト関数)は、正規分布にもとづいて確率を返す互換関数です。正規分布とは、データが平均値を中心に左右対称の釣鐘型に分布する統計モデルです。
たとえば「平均60点・標準偏差10点のテストで、80点以下は全体の何%か」を1つの数式で求められます。
NORMDIST関数にできることをまとめると、次のとおりです。
- ある値が全体の何%に位置するかを求める(累積確率)
- 正規分布グラフ上の密度(高さ)を取得する
- 品質管理で規格内に収まる製品の割合を計算する
NOTE
NORMDIST関数はGoogleスプレッドシートの全バージョンで使えます。ただしGoogleの公式ドキュメントではピリオド付きのNORM.DIST関数が推奨されています。新しく数式を書くときはNORM.DISTを使いましょう。
基本構文と4つの引数
=NORMDIST(値, 平均, 標準偏差, 累積)
カッコの中に4つの引数を指定します。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値(x) | 必須 | 確率を求めたい数値 |
| 平均(mean) | 必須 | 分布の平均値 |
| 標準偏差(standard_deviation) | 必須 | 分布の標準偏差(0より大きい値) |
| 累積(cumulative) | 必須 | TRUEで累積分布、FALSEで確率密度 |
TIP
標準偏差(データの散らばり具合を表す指標)に0以下を指定すると
#NUM!エラーになります。数値以外を指定すると#VALUE!エラーです。
NORM.DISTとの違い
NORMDISTとNORM.DISTの違いは「関数名のみ」です。引数の順番も計算結果も完全に同じです。
=NORMDIST(80, 60, 10, TRUE) → 0.9772
=NORM.DIST(80, 60, 10, TRUE) → 0.9772
違いをまとめると次の表のとおりです。
| 項目 | NORMDIST | NORM.DIST |
|---|---|---|
| 関数名の形式 | ピリオドなし(旧形式) | ピリオドあり(新形式) |
| Googleスプレッドシート | 使える | 使える(推奨) |
| Excel 2007以前 | 使える | 使えない |
| Excel 2010以降 | 使える(互換用) | 使える(推奨) |
| 引数・戻り値 | 同じ | 同じ |
| 公式ドキュメントでの扱い | 互換関数 | 推奨関数 |
Excelでは2007年までNORMDISTが標準でした。2010以降でピリオド付きのNORM.DISTに名称が変更されています。Googleスプレッドシートもこの命名規則に合わせています。
既存のシートにNORMDISTで書いた数式がある場合、わざわざ書き換える必要はありません。動作に違いはないので、そのまま使い続けて大丈夫ですよ。
スプレッドシートでのNORMDIST関数の使い方
NORMDIST関数の4番目の引数「累積」で、TRUEかFALSEを選びます。それぞれの使い方を見ていきましょう。
TRUE(累積確率)で「x以下の確率」を求める
TRUEを指定すると累積分布関数の値を返します。「ある値以下になる確率」を求めるときに使います。
=NORMDIST(80, 60, 10, TRUE)
結果は約0.9772(97.7%) です。「平均60・標準偏差10の分布で、80以下になる確率が97.7%」という意味です。
「x以上」の確率を求めたいときは、1から引きます。
=1 - NORMDIST(80, 60, 10, TRUE)
結果は約0.0228。つまり80を超えるのは上位約2.3%ですね。
FALSE(確率密度)でグラフの高さを取得する
FALSEを指定すると確率密度関数の値を返します。正規分布グラフ上のy座標の値です。
=NORMDIST(80, 60, 10, FALSE)
結果は約0.0054です。これは「確率」ではなくグラフの高さなので、直接「何%」とは読めません。正規分布のグラフを描くときに使います。
実務では「x以下の確率を知りたい」場面がほとんどです。迷ったらTRUEを選んでおけば間違いありませんよ。
NORMDIST関数の実務活用例
基本がわかったところで、実務で使えるパターンを紹介します。
成績データの相対位置を計算する
テストの結果から「自分が上位何%か」を知りたい場面で便利です。
平均点が65点、標準偏差が12点の試験で82点を取った場合です。
=NORMDIST(82, 65, 12, TRUE)
結果は約0.9222(92.2%) です。82点以下が全体の92.2%なので、上位約7.8%に入っていることがわかります。
チームのKPI達成率など、数値データの相対的な位置づけを出したいときにも応用できますよ。
AVERAGE・STDEVとのネスト活用
NORMDIST関数を使うには、平均と標準偏差が必要です。AVERAGE関数とSTDEV関数を組み合わせると、データが増えても自動で再計算されます。
テストの点数がB2:B31に入っているとします。
=NORMDIST(80, AVERAGE(B2:B31), STDEV(B2:B31), TRUE)
このようにネスト(入れ子に)すれば、データを追加・変更しても結果が自動更新されます。平均や標準偏差を別セルに出しておいて参照する方法でもOKです。
TIP
NORMDIST関数の中でもNORM.DISTの中でも、AVERAGE・STDEVとの組み合わせ方はまったく同じです。関数名が違うだけで使い方は変わりませんよ。
ExcelからスプレッドシートへのNORMDIST移行ガイド
ExcelからGoogleスプレッドシートに移行するとき、NORMDISTまわりで知っておくべきポイントをまとめました。
移行時に確認すべき3つのポイント
1. 既存のNORMDIST数式はそのまま動く
ExcelファイルをGoogleスプレッドシートにインポートしたとき、NORMDISTの数式はそのまま正常に動作します。自動変換や手動書き換えは不要です。
2. 新規作成時はNORM.DISTを推奨
既存の数式はそのままで問題ありませんが、新しく数式を書く場合はNORM.DIST関数を使いましょう。将来的な互換性を考えると、推奨関数を使っておくのが安心です。
3. 他の旧関数名も同じルール
NORMDISTだけでなく、統計関数は多くが「ピリオドなし→ピリオドあり」に移行しています。
| 旧関数名 | 新関数名(推奨) |
|---|---|
| NORMDIST | NORM.DIST |
| NORMINV | NORM.INV |
| NORMSDIST | NORM.S.DIST |
| NORMSINV | NORM.S.INV |
どの関数も「旧名で書いた数式はそのまま動く。新しく書くなら新名を使う」が基本の考え方です。
よくあるエラーと対処法
NORMDIST関数でつまずきやすいポイントをまとめました。
標準偏差に0以下を指定して#NUM!エラー
標準偏差は「0より大きい値」が必要です。0を指定すると#NUM!エラーになります。すべてのデータが同じ値のとき、STDEV関数は0を返します。そのままNORMDISTに渡さないように注意してください。
=NORMDIST(80, 60, 0, TRUE) ← #NUM! エラー
引数に文字列を渡して#VALUE!エラー
数値であるべき引数にテキストが入ると#VALUE!エラーです。セル参照を使うときは、参照先が数値か確認しましょう。
TRUE/FALSEの指定を忘れる
4番目の引数は省略できません。書き忘れるとエラーになります。「x以下の確率」が欲しいならTRUE、「グラフの高さ」が欲しいならFALSEを指定してくださいね。
まとめ
NORMDIST関数は、正規分布にもとづいて確率を返す互換関数です。
- NORM.DISTと引数・計算結果は完全に同じ。違いは関数名だけ
- Excelの旧バージョン(2007以前)で標準だった関数名で、Googleスプレッドシートでも使える
- 既存シートのNORMDIST数式は書き換え不要。そのまま動く
- 新しく数式を書くときはNORM.DIST関数を推奨
- AVERAGE関数とSTDEV関数と組み合わせると、平均・標準偏差を自動計算できる
- 標準偏差に0以下を渡すと
#NUM!エラーになるので注意
ExcelからGoogleスプレッドシートへ移行した方は、まず既存の数式がそのまま動くことを確認してみてください。その上で、新しく書く数式から少しずつNORM.DISTに切り替えていくのがおすすめですよ。
