「規格外れの割合を出してほしい」と言われ、=1-ERF(x) と書いたことはありませんか。
その「1を引く」手間を省いてくれるのが、スプレッドシートのERFC関数です。ERF関数(誤差関数)の「残り部分」を返す相補版で、テール確率(分布の裾に出る確率)や不良率を直接計算できます。
この記事では、ERFC関数の構文・使い方・ERFとの使い分けを解説します。ERFC.PRECISEとの違いも含め、誤差関数ファミリー4関数をすっきり整理できる内容にしました。ERF関数の基本については スプレッドシートのERF関数の使い方 で詳しく解説しています。合わせてご覧ください。
ERFC関数とは何か|Googleスプレッドシートで使う相補誤差関数の基本
まず「ERFCとは何か」をざっくり押さえておきましょう。数式より先にイメージをつかんでおくと、後の説明がスムーズに入ってきます。
ERFC = 1 − ERF という相補関係
ERFCは相補誤差関数(Complementary Error Function)と呼ばれます。ERF関数(誤差関数)と次の関係にある関数です。
ERFC(x) = 1 − ERF(x)
ERF(x)が「0からxまで」の積分を返すのに対し、ERFC(x)は「xから+∞まで」の積分を返します。2つを足すと必ず1になります。
ERF(x) + ERFC(x) = 1
積分で書くと次のとおりです。
ERFC(x) = (2/√π) × ∫(x→+∞) e^(-t²) dt
「ERFが捉えた範囲の外側がERFC」というイメージを持つと、直感的に理解しやすいですよ。
どんな場面で使うのか(テール確率・不良率)
ERFC関数が特に役立つ場面は主に2つです。
1つ目はテール確率(正規分布の裾、ある値より外側に出る確率)の計算です。ERF関数では「内側の確率」が返ってきます。外側を出すには 1-ERF(x) と書く必要があります。ERFCならそのまま1ステップで出せます。
2つ目は不良率の計算です。製品の寸法が規格外れになる割合を求めるとき、ERFCを使うと数式が短くなります。
「誤差の範囲外に出る確率」を求めたいときは、ERFよりERFCのほうが直感的ですよ。
ERF関数との関係を「残り部分」のイメージで理解する
確率の全体を1と考えると、ERFが「真ん中に収まった分」、ERFCが「はみ出した分」です。コインの表と裏のような相補関係で、どちらか一方があればもう一方は自動的に決まります。
「裾の確率を出したい」場面では、ERFよりERFCのほうが読みやすい数式になります。
ERFC関数の構文と引数
ERFC関数の構文はシンプルです。引数は1つだけです。
基本構文:=ERFC(x)
=ERFC(x)
| 引数 | 必須/省略 | 型 | 説明 |
|---|---|---|---|
| x | 必須 | 数値 | 積分の下限値。ERFC(0)=1、負の値も入力可 |
代表的な戻り値を表にまとめました。
| 数式 | 結果 | 補足 |
|---|---|---|
=ERFC(0) | 1 | 全範囲の積分(最大値) |
=ERFC(0.5) | 約 0.4795 | — |
=ERFC(1) | 約 0.1573 | ERF(1)≈0.8427との和=1 |
=ERFC(1.5) | 約 0.0339 | — |
=ERFC(2) | 約 0.00468 | ほぼゼロに近い |
=ERFC(3) | 約 0.0000221 | ほぼゼロ |
=ERFC(-1) | 約 1.8427 | 1を超える(正常な動作) |
xが大きくなるほど0に近づきます。値域は0〜2です(xが−∞→+∞のとき2→0に単調減少)。xが負のときは1を超えますが、これは正常な動作です。
引数に数値以外を入れた場合(#VALUE!エラー)
引数に文字列や空白を渡すと #VALUE! エラーになります。
=ERFC("abc") → #VALUE!
=ERFC(A1) → A1が文字列や空白の場合 #VALUE!
詳しい対処は後半の「エラーと対処法」で解説します。
ERFC関数の使い方|基本例と応用例
ここからは実際の入力例を見ていきます。
数値を直接入力する基本パターン
まずは引数に数値を直接書くパターンです。
=ERFC(0) → 1
=ERFC(1) → 0.1572992071
=ERFC(2) → 0.004677734981
xが大きくなるにつれて急激に0に近づきます。xが3を超えると0.0001未満の非常に小さな値になります。
負の値も渡せます。
=ERFC(-1) → 1.8427007929
ERF(-1)≈−0.8427なので、ERFC(-1)=1−(−0.8427)=1.8427になります。
セル参照で連続計算する
実務では、A列にx値を並べてB列で一括計算する形が使いやすいです。
| A(x値) | B(数式) | 結果 | |
|---|---|---|---|
| 2 | 0 | =ERFC(A2) | 1 |
| 3 | 0.5 | =ERFC(A3) | 0.4795001222… |
| 4 | 1 | =ERFC(A4) | 0.1572992071… |
| 5 | 1.5 | =ERFC(A5) | 0.0338948535… |
| 6 | 2 | =ERFC(A6) | 0.004677734… |
B2に =ERFC(A2) と入力し、下方向にドラッグコピーするだけです。
ERF(x) + ERFC(x) = 1 を確認する(相補性の検証)
ERFとERFCの相補関係は、スプレッドシート上で確認できます。
=ERF(1) + ERFC(1) → 1
=ERF(2) + ERFC(2) → 1
この式を実際に試してみると、ERFC関数の意味が体感的につかめますよ。
ERFC と ERF の使い分け
同じ計算結果を出せる場面でも、ERFとERFCでは数式の読みやすさが変わります。
「引き算しなくて済む」ときにERFCを選ぶ
ERF関数で「裾の確率」を出すには =1-ERF(x) と書く必要があります。ERFCならそのまま書けます。
| 求めたい値 | ERFを使う場合 | ERFCを使う場合 |
|---|---|---|
| x=1の裾の確率 | =1-ERF(1) | =ERFC(1) |
| 不良率(規格幅0.3、標準偏差0.1) | =1-ERF(0.3/(0.1*SQRT(2))) | =ERFC(0.3/(0.1*SQRT(2))) |
数式が1ステップ短くなります。「裾の確率を出している」という意図も、式の見た目から伝わりやすくなります。
不良率・テール確率を直接出す実務パターン
製品の寸法が正規分布に従う場合、ERFCで不良率を直接計算できます。正規分布とは、測定値が平均値の周りに釣り鐘型に散らばる確率分布のことです。
具体例: 平均10mm、標準偏差(ばらつきの大きさを示す指標)0.1mm、規格幅±0.3mm(9.7〜10.3mm)の場合
=ERFC(0.3 / (0.1 * SQRT(2)))
→ 約 0.0027(不良率 0.27%)
ERFを使う場合は =1-ERF(0.3/(0.1*SQRT(2))) と書く必要があります。ERFCなら引き算なしで不良率が直接出てきます。
テール確率(正規分布の上側確率)は次の式で計算できます。
P(X > x) = ERFC(x / SQRT(2)) / 2
代表的な換算値です。
| x(標準偏差の倍数) | 数式 | 結果 | 意味 |
|---|---|---|---|
| 1.0 | =ERFC(1/SQRT(2))/2 | 約 0.1587 | 平均+1σ超えの確率 |
| 1.96 | =ERFC(1.96/SQRT(2))/2 | 約 0.025 | 統計的有意水準5%(片側) |
| 2.0 | =ERFC(2/SQRT(2))/2 | 約 0.0228 | 平均+2σ超えの確率 |
| 3.0 | =ERFC(3/SQRT(2))/2 | 約 0.00135 | 平均+3σ超えの確率 |
NORM.DIST との使い分けも含めた判断フロー
正規分布の確率を出す方法は複数あります。次の基準で使い分けると迷いません。
- テール確率・不良率を直接出したい → ERFC を使う(引き算不要)
- 工学系の数式に erf(x) がそのまま登場する → ERF または ERFC を使う
- 平均・標準偏差を直接指定して確率を出したい → NORM.DIST(正規分布の累積確率を計算する関数)が直感的
ERFCとNORM.DISTの関係は次のとおりです。
NORM.DIST(x, 0, 1, TRUE) = 1 − ERFC(x/SQRT(2))/2
「平均と標準偏差を指定して確率を出したいだけ」なら、NORM.DISTで十分です。ERFCは「裾の確率を直接出したい」場面で力を発揮します。
ERFC.PRECISE との違い
ERFC.PRECISEは、ERFCとまったく同じ計算をする関数です。
引数の意味は同じ・Excel互換性の差
| 項目 | ERFC | ERFC.PRECISE |
|---|---|---|
| 計算結果 | 同じ | 同じ |
| 引数の数 | 1個 | 1個 |
| 積分範囲 | x〜+∞ | x〜+∞ |
| Excel互換 | Excel 2010 以前も対応 | Excel 2010 以降 |
| Googleスプレッドシート | 使用可能 | 使用可能 |
=ERFC(1) → 0.1572992071
=ERFC.PRECISE(1) → 0.1572992071
小数点以下まで完全に一致します。
「PRECISE」という名前は「精度が高い」という意味ではありません。Excel 2010で命名規則を統一した際に付けられたサフィックスです。ERFCとまったく同じ計算をしています。
どちらを使うべきか
実務ではERFCで統一して問題ありません。Googleスプレッドシートでは両関数とも使えます。
Excel 2010以降との互換性を明示したい場合は、ERFC.PRECISEを選ぶ選択肢もあります。どちらを選んでも計算結果は変わりません。
4関数ファミリーの比較については スプレッドシートのERF.PRECISE関数の使い方 で詳しく整理しています。合わせてご覧ください。
エラーと対処法
ERFC関数で発生するエラーの大半は #VALUE! です。原因はシンプルなので、対処も難しくありません。
#VALUE!エラーの原因と解決策
原因: 引数に数値以外(文字列・空白など)を渡している。
=ERFC("abc") → #VALUE!
=ERFC(A1) → A1が文字列や空白の場合 #VALUE!
解決策:
- 引数が数値かを確認する:
=ISNUMBER(A1)でTRUEが返るかチェックする。ISNUMBER(セルの値が数値かどうかを判定する関数)が便利です - 文字列の数字を変換する:
=VALUE(A1)で数値に変換してから渡す - エラー行を空白にする:
=IFERROR(ERFC(A2), "")でガードする
IFERROR(エラー発生時に代替値を返す関数)を使うと、大量データのシートでも見た目をきれいに保てます。
=IFERROR(ERFC(A2), "")
複数行に数式をコピーする際は、IFERRORで包んでおくと安心です。
なお、#NAME? エラーは関数名のスペルミスが原因です。正しくは ERFC(ERFCC ではない)です。
まとめ
スプレッドシートのERFC関数は、ERF関数の「残り部分(相補)」を1ステップで返す関数です。最後にポイントを振り返っておきましょう。
- 構文:
=ERFC(x)。引数は1つだけ(積分範囲はx〜+∞固定) - 代表値: ERFC(0)=1、ERFC(1)≈0.1573、ERFC(2)≈0.00468
- 相補関係: ERF(x) + ERFC(x) = 1 が常に成り立つ
- 使い分け: 「裾の確率・不良率」を出したいときはERFCが有利。
=1-ERF(x)の引き算が不要 - 不良率の計算:
=ERFC(規格幅 / (標準偏差 × SQRT(2)))で直接計算できる - ERFC.PRECISEとの違い: 計算結果は完全に同じ。Excel互換性の表記が異なるだけ
- エラー:
#VALUE!がほぼすべて。引数が数値かどうかを確認すれば解決する
「テール確率や不良率を出したい」場面では、まず =ERFC(x) を試してみてください。ERF関数と組み合わせれば、誤差関数ファミリー全体を使いこなせるようになります。
ERF関数の基本については スプレッドシートのERF関数の使い方 で詳しく解説しています。合わせてご覧ください。
