「Excelで使っていたNORMSDIST関数、スプレッドシートでも同じように使えるのかな?」。ExcelからGoogleスプレッドシートへ移行したときに気になるポイントですよね。
結論から言うと、NORMSDIST関数はGoogleスプレッドシートでもそのまま使えます。ただし、現在はNORM.S.DISTという新しい名前の関数が推奨されています。この記事ではNORMSDIST関数の使い方を、NORM.S.DISTとの違い・実務での使い方・移行時のポイント・よくある質問まで、まとめて解説します。
スプレッドシートのNORMSDIST関数とは
NORMSDIST関数(読み方: ノームズ・ディスト関数)は、標準正規分布にもとづいて累積確率を返す互換関数です。関数名の「NORMS」は「Normal Standard(正規・標準)」の略。「DIST」は「Distribution(分布)」の略です。
標準正規分布とは、平均が0、標準偏差が1の正規分布のことです。あの釣り鐘型のグラフ(ベルカーブ)の中でも、基準となる形ですね。試験の偏差値・品質管理の管理図・統計的仮説検定(z検定)など、ビジネスでもよく登場します。
NORMSDIST関数にできることをまとめると、次のとおりです。
- zスコアから「その値以下になる確率」を求める(累積確率)
- STANDARDIZE関数で標準化したデータの位置を数値化する
- 統計的な判定(p値の算出など)に活用する
- 偏差値や上位パーセンタイルの算出にも応用できる
NOTE
NORMSDIST関数はGoogleスプレッドシートの全バージョンで使えます。ただしGoogleの公式ドキュメントではピリオド付きのNORM.S.DIST関数が推奨されています。新しく数式を書くときはNORM.S.DISTを使いましょう。
なぜ「互換関数」と呼ばれるのか
NORMSDIST関数は、Excel 2007以前のバージョンで標準だった関数名です。Excel 2010以降、Microsoftが統計関数の命名を整理し直し、ピリオド区切りの「NORM.S.DIST」を新しい標準として導入しました。
NORMSDISTという旧名はそのまま「互換用」として残されており、古いExcelファイルや既存のスプレッドシートで動かなくなることはありません。Googleスプレッドシートも同じ方針で、両方の関数名をサポートしています。
つまり、「旧名でも新名でも、結果は同じ」というのが基本のスタンスです。
NORMSDIST関数の書き方(構文と引数)
基本構文
=NORMSDIST(z)
カッコの中に引数は1つだけです。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| z | 必須 | 累積確率を求めたいzスコア(標準化された値) |
NORMDIST関数は4つの引数が必要ですが、NORMSDIST関数は1つだけです。平均と標準偏差は「0と1」に固定されていて、累積確率の計算(TRUE相当)のみに対応しています。
TIP
zスコアとは、データを「平均0・標準偏差1」に変換した値のことです。STANDARDIZE関数で計算できますよ。
NORM.S.DISTとの違い
NORMSDISTとNORM.S.DISTの最大の違いは「引数の数」です。NORM.S.DISTは2番目の引数で累積確率か確率密度かを選べます。一方、NORMSDISTは常に累積確率を返します。
=NORMSDIST(1.5) → 0.9332(累積確率のみ)
=NORM.S.DIST(1.5, TRUE) → 0.9332(累積確率)
=NORM.S.DIST(1.5, FALSE) → 0.1295(確率密度)
違いをまとめると次の表のとおりです。
| 項目 | NORMSDIST | NORM.S.DIST |
|---|---|---|
| 関数名の形式 | ピリオドなし(旧形式) | ピリオドあり(新形式) |
| 引数の数 | 1つ(z値のみ) | 2つ(z値 + 累積フラグ) |
| 確率密度(FALSE) | 取得できない | 取得できる |
| Googleスプレッドシート | 使える | 使える(推奨) |
| Excel 2007以前 | 使える | 使えない |
| Excel 2010以降 | 使える(互換用) | 使える(推奨) |
| 公式ドキュメントでの扱い | 互換関数 | 推奨関数 |
既存のシートにNORMSDISTで書いた数式がある場合、わざわざ書き換える必要はありません。動作に違いはないので、そのまま使い続けて大丈夫ですよ。
よく出てくるzスコアと対応する累積確率
実務でよく使うzスコアと、それぞれに対応する累積確率を一覧にしました。
| zスコア | NORMSDIST(z) | 意味 |
|---|---|---|
| -2.58 | 約0.0049 | 下位0.5%(99%信頼区間の下端) |
| -1.96 | 約0.0250 | 下位2.5%(95%信頼区間の下端) |
| -1.65 | 約0.0495 | 下位5%(90%信頼区間の下端) |
| -1.00 | 約0.1587 | 平均より1σ下 |
| 0.00 | 0.5000 | 平均値(中央) |
| 1.00 | 約0.8413 | 平均より1σ上 |
| 1.65 | 約0.9505 | 上位5%(90%信頼区間の上端) |
| 1.96 | 約0.9750 | 上位2.5%(95%信頼区間の上端) |
| 2.58 | 約0.9951 | 上位0.5%(99%信頼区間の上端) |
この表を覚えておくと、品質管理や仮説検定で「いまどのあたりの確率の話をしているか」が直感的にわかります。
基本的な使い方
NORMSDIST関数の基本的な使い方を見ていきましょう。
zスコアから累積確率を求める
zスコアが1.96のとき、「その値以下になる確率」を求めます。
=NORMSDIST(1.96)
結果は約0.9750(97.5%) です。zスコアが1.96以下になる確率が97.5%という意味ですね。ちなみに統計学でよく使われる「95%信頼区間の上限」がz = 1.96です。
「x以上」の確率を求める
「zスコアがx以上になる確率」は、1から累積確率を引くだけです。
=1 - NORMSDIST(1.96)
結果は約0.0250(2.5%) です。zスコアが1.96を超えるのは全体の2.5%しかありません。仮説検定の片側検定で「有意」と判定される境界として有名な値ですね。
マイナスのzスコアを指定する
zスコアにはマイナスの値も指定できます。
=NORMSDIST(-1.5)
結果は約0.0668(6.7%) です。平均よりも1.5標準偏差分低い値以下になる確率が6.7%ということですね。
2つの値の間の確率を求める
「zスコアがaからbの間に入る確率」は、引き算で求められます。
=NORMSDIST(1.96) - NORMSDIST(-1.96)
結果は約0.9500(95%) です。「平均から左右1.96σの範囲」に95%のデータが収まる、というおなじみの結果になります。品質管理の管理限界や、A/Bテストの信頼区間の考え方の基礎ですね。
NORMSDIST関数の実務活用例
基本がわかったところで、実務で使えるパターンを紹介します。
STANDARDIZEと組み合わせて相対位置を求める
NORMSDIST関数は標準正規分布専用なので、元のデータをzスコアに変換してから使います。STANDARDIZE関数と組み合わせると便利です。
平均点が65点、標準偏差が12点の試験で82点を取った場合です。
=NORMSDIST(STANDARDIZE(82, 65, 12))
結果は約0.9222(92.2%) です。82点以下が全体の92.2%なので、上位約7.8%に入っていることがわかります。
TIP
STANDARDIZE関数を使わずに手動で計算する場合は
=NORMSDIST((82-65)/12)と書きます。結果は同じですが、STANDARDIZE関数を使った方が読みやすいですよ。
AVERAGE・STDEVと組み合わせる
実際のデータで使うときは、AVERAGE関数とSTDEV関数を組み合わせると便利です。データが増えても自動で再計算されます。
テストの点数がB2:B31に入っているとします。80点の相対位置を求める数式です。
=NORMSDIST((80 - AVERAGE(B2:B31)) / STDEV(B2:B31))
このようにネスト(入れ子に)すれば、データを追加・変更しても結果が自動更新されます。
偏差値を求める
「テストの偏差値」を計算するときも、NORMSDIST関数の発想が役に立ちます。偏差値の定義は「平均50、標準偏差10になるようにスケール変換した値」ですが、その背景にはzスコアと正規分布があります。
=50 + 10 * (B2 - AVERAGE(B$2:B$31)) / STDEV(B$2:B$31)
そして偏差値65(z = 1.5に相当)の人が「上位何%か」を知りたいときは、次の式で確認できます。
=1 - NORMSDIST(1.5)
結果は約0.0668。偏差値65以上は上位約6.7%、という直感を数字で裏付けてくれます。
品質管理:管理限界を超える確率
工場の生産ラインで、製品の重量が「平均100g、標準偏差0.5g」だったとします。「99.5g未満になる不良品の発生確率」を求めるなら、こう書きます。
=NORMSDIST((99.5 - 100) / 0.5)
結果は約0.1587(15.87%)。「平均から1σ下」の発生頻度ですね。逆に「±3σの外」に出る確率を求めれば、おなじみの「シックスシグマ的な発生確率」を可視化できます。
A/Bテスト:z検定のp値計算
A/Bテストでz検定をかけたあと、得られたz値をそのままNORMSDIST関数に渡すと、片側のp値が一発で取れます。
両側p値 = 2 * (1 - NORMSDIST(ABS(z)))
たとえば z = 2.3 ならこう書きます。
=2 * (1 - NORMSDIST(ABS(2.3)))
結果は約0.0214。「有意水準5%なら有意」「1%だと有意ではない」と判断できますね。
ExcelからスプレッドシートへのNORMSDIST移行ガイド
ExcelからGoogleスプレッドシートに移行するとき、NORMSDISTまわりで知っておくべきポイントをまとめました。
移行時に確認すべき3つのポイント
1. 既存のNORMSDIST数式はそのまま動く
ExcelファイルをGoogleスプレッドシートにインポートしたとき、NORMSDISTの数式はそのまま正常に動作します。自動変換や手動書き換えは不要です。
2. 新規作成時はNORM.S.DISTを推奨
既存の数式はそのままで問題ありませんが、新しく数式を書く場合はNORM.S.DIST関数を使いましょう。NORM.S.DISTなら確率密度(FALSE)も取得でき、将来的な互換性の面でも安心です。
3. 他の旧関数名も同じルール
NORMSDISTだけでなく、統計関数は多くが「ピリオドなし→ピリオドあり」に移行しています。
| 旧関数名 | 新関数名(推奨) |
|---|---|
| NORMSDIST | NORM.S.DIST |
| NORMDIST | NORM.DIST |
| NORMINV | NORM.INV |
| NORMSINV | NORM.S.INV |
どの関数も「旧名で書いた数式はそのまま動く。新しく書くなら新名を使う」が基本の考え方です。
Excel側でNORM.S.DISTに置き換える小ワザ
Excel 2010以降を使っていて、旧名から新名に統一したいときは、検索と置換が手っ取り早いです。NORMSDIST( を NORM.S.DIST( に置換し、第2引数(TRUEまたはFALSE)を手で追記すれば移行できます。テスト用のシートを複製してから一括置換するのがおすすめです。
よくあるエラーと対処法
NORMSDIST関数でつまずきやすいポイントをまとめました。
引数に文字列を渡して#VALUE!エラー
数値であるべき引数にテキストが入ると#VALUE!エラーです。セル参照を使うときは、参照先が数値か確認しましょう。
=NORMSDIST("abc") ← #VALUE! エラー
引数を空にして#N/Aエラー
引数を指定せずに=NORMSDIST()と書くとエラーになります。zスコアの値を必ず指定してください。
極端な値を渡して結果が「0」または「1」になる
zスコアが大きすぎる(例: 10)と結果は1に、小さすぎる(例: -10)と結果は0に収束します。これはエラーではなく仕様です。スプレッドシートの表示桁数の問題で「1」「0」に丸まっているだけなので、必要に応じてセル書式で小数点以下の桁数を増やすと差が見えます。
NORMSDISTで確率密度が欲しい場合
NORMSDIST関数は累積確率しか返せません。確率密度(グラフの高さ)が必要なときは、NORM.S.DIST関数の第2引数にFALSEを指定してください。
=NORM.S.DIST(1.5, FALSE) → 確率密度を取得
NORMSDIST関数についてよくある質問(FAQ)
Q1. NORMSDISTとNORM.S.DISTで結果が違うことはありますか?
いいえ、同じzスコアを渡せば結果は完全に一致します。NORM.S.DISTの第2引数がTRUE(累積確率)のときが、NORMSDISTと同じ動作です。=NORMSDIST(1.5)と=NORM.S.DIST(1.5, TRUE)はどちらも約0.9332を返します。逆に第2引数をFALSE(確率密度)にすると別の値(約0.1295)になるので、そこだけ気をつけてください。
Q2. ExcelファイルをGoogleスプレッドシートにインポートしたら数式が壊れませんか?
NORMSDISTで書かれた数式はインポート後もそのまま動作します。書き換えは不要です。ただし、Excel固有の関数(一部のFORECAST.ETS系など)はGoogleスプレッドシートで未対応のことがあるので、インポート後は念のため#NAME?や#N/Aエラーがないかチェックしましょう。
Q3. NORMSDIST関数で「上位○%」を求めるにはどうすればいいですか?
「ある値以上の確率」が知りたい場合は、=1 - NORMSDIST(z)と書けばOKです。たとえばz = 1.96なら=1 - NORMSDIST(1.96)で約0.025(2.5%)。逆に「上位5%に入るzスコアの値」を求めたいときは、NORM.S.INV関数を使って=NORM.S.INV(0.95)と書くと約1.645が得られます。
Q4. zスコアではなく元の値を直接渡せますか?
NORMSDIST関数は「標準化済み(平均0・標準偏差1)」のzスコアしか受け付けません。元のデータを直接渡したい場合は、NORMDIST関数を使い、平均と標準偏差を引数で指定してください。または事前にSTANDARDIZE関数でzスコアに変換してから渡すのもおすすめです。
Q5. NORMSDIST関数はARRAYFORMULAと組み合わせられますか?
はい、組み合わせられます。たとえばB2:B31の各値をzスコア化して累積確率を出すなら、=ARRAYFORMULA(NORMSDIST((B2:B31-AVERAGE(B2:B31))/STDEV(B2:B31)))のように書けます。大量のデータに一気に適用したいときに便利です。
NORMSINV・NORM.S.INVとの組み合わせ(逆関数との使い分け)
NORMSDIST関数が「zスコア → 確率」を返すのに対し、NORMSINV(または推奨のNORM.S.INV関数)は「確率 → zスコア」を返す逆関数です。この2つをセットで使えると、統計的な計算の幅が大きく広がります。
確率からzスコアを逆算する
「上位5%に入るzスコアは?」という問いには、NORMSINV(またはNORM.S.INV)で答えます。
=NORMSINV(0.95) → 約 1.6449
=NORM.S.INV(0.95) → 約 1.6449(推奨)
得られた1.6449をそのまま=NORMSDIST(1.6449)に渡すと、元の0.95が返ってきます。互いに逆関数の関係です。
実務での往復計算パターン
p値の閾値(例: 0.05)から「棄却域の境界となるzスコア」を求め、そのzスコアを使って観測値との比較を行う流れがよくあります。
| やりたいこと | 使う関数 | 数式例 |
|---|---|---|
| zスコア → 累積確率 | NORMSDIST | =NORMSDIST(1.96) → 0.975 |
| 累積確率 → zスコア | NORMSINV / NORM.S.INV | =NORMSINV(0.975) → 1.96 |
| p値から棄却域を確認 | NORM.S.INV | =NORM.S.INV(1-0.05/2) → 1.96 |
NORMSINV自体も互換関数(旧名)で、新しく書くときはNORM.S.INVが推奨です。
信頼区間の計算例
NORMSDISTの逆関数を組み合わせると、母平均の信頼区間を手軽に算出できます。ここでは「z値による信頼区間」の考え方と、スプレッドシートでの計算例を紹介します。
信頼区間の計算式
標本平均 x̄、標準偏差 σ(または標本標準偏差 s)、標本数 n のとき、信頼水準(1-α)の信頼区間は以下で求められます。
下限 = x̄ - z(α/2) × σ / √n
上限 = x̄ + z(α/2) × σ / √n
ここで z(α/2) = NORM.S.INV(1 - α/2) です。
スプレッドシートでの具体例
例として「アンケートで得た満足度スコア(平均75点、標準偏差10点、n=100)」の95%信頼区間を求めます。
| 項目 | 数式 | 結果 |
|---|---|---|
| z値(95%両側) | =NORM.S.INV(0.975) | 約1.96 |
| 標準誤差 | =10/SQRT(100) | 1.0 |
| 信頼区間 下限 | =75 - NORM.S.INV(0.975) * 10/SQRT(100) | 73.04 |
| 信頼区間 上限 | =75 + NORM.S.INV(0.975) * 10/SQRT(100) | 76.96 |
結果として「母平均は95%の確率で73.04〜76.96点の範囲にある」と解釈できます。
信頼水準ごとのz値早見表
| 信頼水準 | 有意水準 α | z値 | 数式 |
|---|---|---|---|
| 90% | 0.10 | ±1.645 | =NORM.S.INV(0.95) |
| 95% | 0.05 | ±1.960 | =NORM.S.INV(0.975) |
| 99% | 0.01 | ±2.576 | =NORM.S.INV(0.995) |
TIP
z値を毎回計算するのが面倒な場合は、上記の値を定数として使うか、
NORM.S.INVの数式を別セルに置いてセル参照することで管理しやすくなります。
z検定でのp値計算(仮説検定の実践例)
NORMSDISTを使った仮説検定の流れを、具体的なビジネス事例で確認しましょう。
z検定の手順
z検定は「母平均が特定の値と等しいか」を統計的に検証する手法です。母標準偏差が既知の場合に使います。手順は次の4ステップです。
- 帰無仮説 H₀ と対立仮説 H₁ を立てる
- z値(検定統計量)を計算する
- NORMSDISTでp値を求める
- 有意水準と比較して判定する
具体例:Webサイトのコンバージョン率改善
「従来のCVR(母平均)は3.5%、標準偏差は0.8%とわかっている。新デザインで100回テストしたところ平均CVRが4.0%だった。これは統計的に有意な改善か?(有意水準5%、両側検定)」
z値 = (標本平均 - 母平均) / (σ / √n)
= (4.0% - 3.5%) / (0.8% / √100)
= 0.5 / 0.08
= 6.25
スプレッドシートでp値を計算します。
両側p値 = 2 * (1 - NORMSDIST(ABS(z)))
= 2 * (1 - NORMSDIST(6.25))
≒ 0.0000000042
p値が有意水準0.05を大きく下回るため、「新デザインによるCVR改善は統計的に有意」と結論できます。
片側検定と両側検定の使い分け
| 検定の種類 | 使う場面 | p値の計算式 |
|---|---|---|
| 両側検定 | 「差がある」かどうかを検証 | =2*(1-NORMSDIST(ABS(z))) |
| 片側検定(右側) | 「大きくなった」かどうかを検証 | =1-NORMSDIST(z) |
| 片側検定(左側) | 「小さくなった」かどうかを検証 | =NORMSDIST(z) |
NOTE
「差がある方向をあらかじめ予測できる場合」は片側検定、「どちらの方向かわからない場合」は両側検定を選びます。片側検定の方が検出力が高い分、事前の根拠が必要になります。
まとめ
NORMSDIST関数は、標準正規分布の累積確率を返す互換関数です。
- NORM.S.DIST(z, TRUE)と計算結果は同じ。引数は1つだけでシンプル
- ただし確率密度(FALSE)は取得できない。密度が必要ならNORM.S.DIST関数を使う
- Excelの旧バージョン(2007以前)で標準だった関数名で、Googleスプレッドシートでも使える
- 既存シートのNORMSDIST数式は書き換え不要。そのまま動く
- STANDARDIZE関数やAVERAGE関数・STDEV関数と組み合わせると、元のデータから相対位置を一発で計算できる
- 偏差値・品質管理・A/Bテストのp値計算など、実務での使い道は意外と多い
- 新しく数式を書くときはNORM.S.DIST関数を推奨
ExcelからGoogleスプレッドシートへ移行した方は、まず既存の数式がそのまま動くことを確認してみてください。その上で、新しく書く数式から少しずつNORM.S.DISTに切り替えていくのがおすすめですよ。
