「ExcelでNORMSINVを使っていたけど、スプレッドシートでも同じ関数は使えるの?」。Excel から Google スプレッドシートに乗り換えたとき、関数名が変わっていて戸惑うことがありますよね。
結論から言うと、NORMSINV関数はスプレッドシートでもそのまま使えます。ただし、現在は後継のNORM.S.INV関数が推奨されています。
この記事では、NORMSINV関数の基本的な使い方から、NORM.S.INVとの違い、Excel移行時のポイントまでまとめて解説します。
スプレッドシートのNORMSINV関数とは?
NORMSINV関数(読み方: ノームエスインバース関数)は、標準正規分布の逆関数です。累積確率を入力すると、対応するzスコア(標準化された値)を返してくれます。
関数名の由来を分解すると次のとおりです。
- NORM = Normal(正規分布)
- S = Standard(標準)
- INV = Inverse(逆)
ひとことで言えば、「確率からzスコアを逆算する関数」ですね。
ただし、NORMSINV は Excel 2007 以前から使われている旧関数名です。Excel 2010 以降でピリオド付きの新関数名(NORM.S.INV)に移行されました。Google スプレッドシートでは両方使えますが、新しく数式を書くならNORM.S.INV関数を使うのがおすすめです。
構文と引数
=NORMSINV(x)
引数はたった1つです。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| x | 必須 | zスコアを求めたい累積確率。0より大きく1より小さい値を指定する |
xには0 < x < 1の範囲で値を入れます。0ちょうどや1ちょうどは指定できません。
NORMSINV と NORM.S.INV は何が違う?
結論から言うと、計算結果はまったく同じです。
=NORMSINV(0.95) → 約 1.6449
=NORM.S.INV(0.95) → 約 1.6449
NORMSINV は「互換性のために残されている旧関数名」という位置づけです。Googleの公式ヘルプでも、NORM.S.INVのページにNORMSINVが旧名として記載されています。
| 比較項目 | NORMSINV | NORM.S.INV |
|---|---|---|
| 導入時期 | Excel 2007以前 | Excel 2010以降 |
| 構文 | =NORMSINV(x) | =NORM.S.INV(x) |
| 計算結果 | 同じ | 同じ |
| Googleスプレッドシート | 使用可能 | 使用可能(推奨) |
| 将来性 | 将来廃止の可能性あり | 現行の標準 |
新しくシートを作るときはNORM.S.INVを使いましょう。既存のシートでNORMSINVが使われている場合は、そのままでも問題なく動作しますよ。
NORMSINVの基本的な使い方
NORMSINV関数の基本を、よく使う2つのパターンで見ていきましょう。
片側95%の臨界値を求める
「上位5%の境目にあたるzスコアはいくつ?」を求めるケースです。
=NORMSINV(0.95)
結果は約1.6449です。zスコアが1.6449を超えると、上位5%に入ることを意味します。統計的検定で有意水準5%の臨界値(きかいち)を出したいときに使います。
両側95%信頼区間の臨界値を求める
両側95%信頼区間では、上下2.5%ずつを除外します。右側の臨界値は確率0.975で求めます。
=NORMSINV(0.975)
結果は約1.9600です。左側の臨界値は符号を反転して-1.9600になります。
よく使う確率値とzスコアの対応をまとめておきます。
| 確率(x) | zスコア(戻り値) | よく使う場面 |
|---|---|---|
| 0.90 | 1.2816 | 片側10%臨界値 |
| 0.95 | 1.6449 | 片側5%臨界値 |
| 0.975 | 1.9600 | 両側95%信頼区間 |
| 0.99 | 2.3263 | 片側1%臨界値 |
| 0.995 | 2.5758 | 両側99%信頼区間 |
1.96という数字は統計で最も頻出する値の1つです。覚えておくと便利ですよ。
実務での活用例
基本の使い方がわかったところで、実務で役立つパターンを紹介します。
品質管理で合否ラインを設定する
製造業の品質管理で「不良率を3%以下にしたい」場面を考えます。上位3%を超えたら規格外とする場合、合否ラインのzスコアは次のように求めます。
=NORMSINV(1 - 0.03)
これは=NORMSINV(0.97)と同じで、結果は約1.8808です。
zスコアが1.8808を超えるデータは規格外と判定できます。平均と標準偏差(ひょうじゅんへんさ)がわかれば、元の単位に換算して具体的な合否ラインを設定できますよ。
テスト結果を偏差値に変換する
「上位10%は偏差値いくつ以上か?」を求める場合です。偏差値は平均50・標準偏差10に変換した値です。
=50 + 10 * NORMSINV(1 - 0.10)
NORMSINV(0.90)は約1.2816なので、結果は約62.8です。偏差値63以上が上位10%の目安になります。
NORM.S.DISTで計算結果を検証する
NORMSINV関数の出力をNORM.S.DIST関数に渡すと、元の確率に戻るはずです。
=NORM.S.DIST(NORMSINV(0.95), TRUE)
結果は0.95です。元の確率と一致すれば、計算が正しいと確認できます。この「往復検証」は統計関数を使うときの基本テクニックです。覚えておくと安心ですよ。
Excel から移行するときの注意点
ExcelでNORMSINVを使っていたシートをスプレッドシートに移行する場合、知っておきたいポイントをまとめます。
そのままコピーしても動く
NORMSINVはスプレッドシートでも互換サポートされています。ExcelファイルをGoogleドライブにアップロードしても、数式はそのまま動作します。
新しい数式はNORM.S.INVで書く
既存シートのNORMSINVは放置でOKです。ただし、新しくセルに数式を追加するときはNORM.S.INV関数を使いましょう。
理由は2つあります。
- 将来性: NORMSINVは互換用の旧関数名なので、将来廃止される可能性がある
- 一貫性: 1つのシートに旧名と新名が混在すると、メンテナンスしにくくなる
一括置換で移行する方法
シート内のNORMSINVをまとめてNORM.S.INVに置き換えたい場合は、次の手順で対応できます。
- Ctrl + H(Mac: Cmd + H)で「検索と置換」を開く
- 検索欄に
NORMSINV(と入力 - 置換欄に
NORM.S.INV(と入力 - 「すべて置換」をクリック
引数の構造が同じなので、カッコの中身を変える必要はありません。置換後に数式エラーが出ていないか確認すれば完了です。
関連する統計関数との使い分け
NORMSINVの周辺にある統計関数を整理しておきます。
| やりたいこと | 使う関数 | 記事リンク |
|---|---|---|
| 確率 → zスコア(標準正規分布) | NORMSINV / NORM.S.INV | NORM.S.INV関数 |
| zスコア → 確率(標準正規分布) | NORMSDIST / NORM.S.DIST | |
| 確率 → 値(任意の正規分布) | NORMINV / NORM.INV | |
| 値 → 確率(任意の正規分布) | NORMDIST / NORM.DIST | |
| 値をzスコアに変換 | STANDARDIZE |
NORMSINVは「標準正規分布で確率→zスコア」の旧関数名です。目的に合った関数を選んでみてくださいね。
よくあるエラーと対処法
NORMSINV関数で起きやすいエラーを2つ紹介します。
#NUM! エラー:確率の範囲外
引数に0以下や1以上の値を指定すると#NUM!エラーになります。
=NORMSINV(0) → #NUM! エラー(0は不可)
=NORMSINV(1) → #NUM! エラー(1は不可)
=NORMSINV(-0.5) → #NUM! エラー(負の値は不可)
有効な範囲は0より大きく1より小さい値です。0と1自体は含まないので注意してください。
#VALUE! エラー:引数が数値でない
引数に文字列を渡すと#VALUE!エラーになります。
=NORMSINV("abc") → #VALUE! エラー
セル参照を使うときは、参照先が数値かどうかを確認しましょう。IF関数とISNUMBER関数(値が数値かどうか判定する関数)を組み合わせると、エラーを事前に防げます。
=IF(ISNUMBER(A1), NORMSINV(A1), "数値を入力してください")
まとめ
NORMSINV関数は、標準正規分布の確率からzスコアを逆算する旧関数名です。
- 構文は
=NORMSINV(x)で、引数は確率値1つだけ - NORM.S.INV関数と計算結果はまったく同じ
- Excel 2010以降で新関数名に移行されたが、スプレッドシートでは今も使える
- 新しく数式を書くなら NORM.S.INV を使うのがおすすめ
- 既存シートのNORMSINVは「検索と置換」で一括移行できる
ExcelからスプレッドシートにNORMSINVを含むシートを移行しても、数式はそのまま動きます。慌てて書き直す必要はありませんよ。ただ、今後新しく入力する数式はNORM.S.INV関数に統一しておくと、メンテナンスがラクになります。
