「この商品が売れる確率ってどのくらいだろう?」「売上が目標を超える確率は?」。過去のデータから確率を計算したいとき、手作業ではどうしても時間がかかりますよね。
それぞれの値に確率が割り当てられたデータがあっても、特定の範囲に収まる確率をひとつずつ足し上げるのは大変ですし、データが増えると計算ミスも起きやすくなります。
そんなときに役立つのがPROB関数です。この記事ではGoogleスプレッドシートでのPROB関数の使い方を、基本構文から実務での活用例、よくあるエラーの対処法、似た関数との使い分け、FAQまで一気に解説します。最後まで読めば、自分の業務データに当てはめてすぐ使えるようになりますよ。
PROB関数とは
PROB関数(読み方: プロバビリティ関数)は、指定した値の範囲に対応する確率の合計を返す関数です。「PROB」は「Probability(確率)」の略で、統計学の世界では確率を表す基本的な記号として使われています。
たとえば「サイコロの目が3以上5以下になる確率は?」のような計算を、数式1つで求められます。手作業なら3つの目の確率を1つずつ足す必要がありますが、PROB関数なら範囲を指定するだけで合計値が一発で返るので、データが多くなるほどメリットが大きくなります。
PROB関数にできることをまとめると、次のとおりです。
- 特定の値に一致する確率を求める
- 指定した範囲(下限~上限)に収まる確率を合計する
- 過去の実績データから将来の発生確率を推定する
- 品質管理で規格内に収まる製品の割合を計算する
- 営業案件の受注確率テーブルから「Aランク以上で決まる確率」などを集計する
NOTE
PROB関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、動作はほぼ同じなので、ExcelからGoogleスプレッドシートに移行した方もそのまま使えますよ。
PROB関数が向いているデータ
PROB関数は離散データ(とびとびの値)に向いています。サイコロの目、評価スコア、注文件数、受注ランクなど「決まった値しか取らないデータ」がベストマッチです。
一方、体重や時間のように小数点以下まで自由に取れる連続データには、PROB関数よりもNORM.DIST関数などの確率分布関数のほうが適しています。
PROB関数の基本構文と引数
=PROB(データ, 確率範囲, 下限, [上限])
カッコの中に4つの引数を指定します。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| データ(x_range) | 必須 | 確率と対応する数値の範囲 |
| 確率範囲(prob_range) | 必須 | データに対応する各確率の範囲 |
| 下限(lower_limit) | 必須 | 確率を求めたい範囲の下限値 |
| 上限(upper_limit) | 任意 | 確率を求めたい範囲の上限値 |
TIP
上限を省略すると、データが下限の値とちょうど一致する確率を返します。範囲ではなくピンポイントの確率を知りたいときは、上限なしで使いましょう。
引数の対応関係に注意
「データ」と「確率範囲」は同じ長さの範囲を、同じ並び順で指定します。たとえばデータがA2:A7(1~6の目)なら、確率範囲もB2:B7(それぞれの確率)と6行ぶん指定する必要があります。
行数が違ったり、データと確率の対応がズレていたりすると、結果が意図せぬ値になったりエラーになったりするので、データテーブルを作るときは必ず1行=1組で並べる癖をつけておくと安心です。
確率範囲のルール
確率範囲に指定する値には2つの条件があります。
- 各確率は0以上1以下の数値であること
- 確率の合計がちょうど1(100%)になること
この条件を満たさないと#NUM!エラーが返ります。確率データを準備するときは、SUM関数で合計が1になっているか確認しておくと安心ですよ。
=SUM(B2:B7) ← この結果が1であればOK
確率の合計が99.9%や100.1%のように1からズレるのは、ほぼ丸め誤差が原因です。後ほど「よくあるエラーと対処法」で具体的な調整テクニックを紹介します。
PROB関数の基本的な使い方
サイコロを例に、PROB関数の基本操作を見ていきましょう。
A列にサイコロの目(1~6)、B列にそれぞれの確率(すべて1/6 = 約0.1667)が入っているとします。
| A列(目) | B列(確率) |
|---|---|
| 1 | 0.1667 |
| 2 | 0.1667 |
| 3 | 0.1667 |
| 4 | 0.1667 |
| 5 | 0.1667 |
| 6 | 0.1667 |
特定の値に一致する確率を求める
「サイコロの目が3になる確率」を求めるには、上限を省略して次のように書きます。
=PROB(A2:A7, B2:B7, 3)
結果は約0.1667(16.7%) です。下限のみを指定しているので、データの中で3にちょうど一致する確率が返ります。
範囲内に収まる確率を求める
「サイコロの目が2以上4以下になる確率」を求めるには、下限と上限の両方を指定します。
=PROB(A2:A7, B2:B7, 2, 4)
結果は約0.5(50%) です。目が2・3・4になる確率(0.1667 x 3)の合計が返ります。
1以上6以下(全範囲)の確率
=PROB(A2:A7, B2:B7, 1, 6)
結果は1(100%) です。すべての目をカバーしているので、確率の合計がそのまま返りますね。全範囲を指定して1になるかどうかは、確率テーブルが正しく作れているかの簡易チェックとしても使えますよ。
下限よりも小さい値や上限よりも大きい値は無視される
PROB関数は、データ範囲のなかで「下限以上 上限以下」に該当する行の確率だけを合計します。たとえば下限を0、上限を10と指定しても、データに1~6しかなければ結果は1になります。範囲外の値があるかどうかを気にせず、安心して大きめの上限・小さめの下限を指定できるのは便利なポイントです。
PROB関数の実務活用パターン
基本がわかったところで、実際の業務で使えるパターンを紹介します。どの例も「自社のデータに置き換えるとどうなるか」を意識しながら読んでみてくださいね。
ここで紹介するパターンに共通するコツは、まず確率テーブルを正しく作ることです。確率テーブルさえ整っていれば、あとはPROB関数の引数を変えるだけで「Aランク以上の確率」「規格内に収まる確率」「目標を達成する確率」など、必要な切り口での集計が一気通貫で出せます。
売上予測で特定の売上金額になる確率を求める
過去の売上データから、各売上レンジの発生確率を計算済みだとします。
| A列(売上万円) | B列(発生確率) |
|---|---|
| 100 | 0.10 |
| 200 | 0.20 |
| 300 | 0.35 |
| 400 | 0.25 |
| 500 | 0.10 |
「売上が200万円以上400万円以下になる確率」を求めてみましょう。
=PROB(A2:A6, B2:B6, 200, 400)
結果は0.80(80%) です。200万円・300万円・400万円の確率を合計した値が返ります。
予算計画の根拠として「売上200~400万円の達成確率は80%」と示せるので、報告資料に説得力が生まれますよ。「目標未達のリスクは何%か」を1から引いて示すと、上司への報告でも一気に伝わりやすくなります。
品質管理で規格内に収まる製品の割合を計算する
検査データから各重量カテゴリの出現確率がわかっている場合、規格範囲内の確率を一発で求められます。
| A列(重量g) | B列(出現確率) |
|---|---|
| 95 | 0.05 |
| 96 | 0.08 |
| 97 | 0.12 |
| 98 | 0.20 |
| 99 | 0.25 |
| 100 | 0.15 |
| 101 | 0.10 |
| 102 | 0.05 |
規格が97g以上101g以下のとき、次のように書きます。
=PROB(A2:A9, B2:B9, 97, 101)
結果は0.82(82%) です。規格内に収まる製品が82%だとわかります。
規格外の割合を求めたいときは、1から引けばOKです。
=1 - PROB(A2:A9, B2:B9, 97, 101)
結果は0.18(18%) です。不良率として報告書に記載できますね。
営業の受注確率テーブルから決まる案件の割合を計算する
営業の案件管理表でランクごとに受注確率を割り当てているケースは多いですよね。たとえばAランク=0.8、Bランク=0.5のように管理している場合、ランク別の発生比率から「Aランク以上で決まる確率」を集計できます。
| A列(ランク) | B列(出現比率) |
|---|---|
| 1(Sランク) | 0.10 |
| 2(Aランク) | 0.25 |
| 3(Bランク) | 0.30 |
| 4(Cランク) | 0.25 |
| 5(Dランク) | 0.10 |
「SランクまたはAランクになる案件の割合」は、ランクを数値化したA列に対して次のように書きます。
=PROB(A2:A6, B2:B6, 1, 2)
結果は0.35(35%) です。「案件全体の35%がAランク以上」とわかるので、見込み顧客のセグメントを判断する材料になりますよ。
アンケートの回答分布から「満足」と回答する確率を求める
5段階評価のアンケート結果を集計したあと、特定の評価範囲の出現確率を求めるのもPROB関数の得意分野です。たとえば顧客満足度調査で次のような分布が得られたとします。
| A列(評価) | B列(出現確率) |
|---|---|
| 1(非常に不満) | 0.05 |
| 2(不満) | 0.10 |
| 3(普通) | 0.30 |
| 4(満足) | 0.35 |
| 5(非常に満足) | 0.20 |
「満足以上(評価4または5)の回答が出る確率」は次のように計算できます。
=PROB(A2:A6, B2:B6, 4, 5)
結果は0.55(55%) です。「顧客の55%は満足以上」とそのままレポートに転用できるので、改善施策の効果検証にも使えます。逆に「不満以下(評価1または2)の確率」も同じ要領で求められ、改善が必要なセグメントの規模感をひとめで把握できます。
COUNTIFと組み合わせて確率テーブルを自動生成する
実務では確率データが最初から用意されていないことも多いですよね。そんなときはCOUNTIF関数を使って、元データから確率テーブルを自動生成できます。
たとえばC列に商品の評価スコア(1~5)が100件入っているとします。
ステップ1: 各スコアの出現回数をCOUNTIFで数える
=COUNTIF(C2:C101, A2)
ステップ2: 出現回数をデータ件数で割って確率に変換する
=COUNTIF(C2:C101, A2) / COUNT(C2:C101)
ステップ3: 完成した確率テーブルにPROB関数を適用する
=PROB(A2:A6, B2:B6, 3, 5)
この手順で「評価スコアが3以上5以下になる確率」を求められます。元データが変われば確率も自動で更新されるので、手動計算よりもずっと効率的ですよ。「高評価(3以上)の割合をモニタリングする」「クレーム発生率(1以下)を週次で追う」といった運用にもそのまま流用できます。
よくあるエラーと対処法
PROB関数は引数のルールがシンプルなぶん、確率範囲の作り方でつまずきやすい関数です。実際にエラーが出たときに「どこを直せばいいか」がすぐにわかるよう、原因と対処法をまとめました。
| エラー | 原因 | 対処法 |
|---|---|---|
#NUM! | 確率範囲に0未満または1超の値がある | 各確率が0以上1以下か確認する |
#NUM! | 確率範囲の合計が1にならない | SUM関数で合計を確認し、1に調整する |
#N/A | データと確率範囲のサイズが異なる | 両方の範囲が同じ行数・列数か確認する |
#VALUE! | 引数に文字列が含まれている | 数値以外のセルが混ざっていないか確認する |
確率の合計が1にならないときの調整テクニック
データから計算した確率は、丸め誤差で合計がぴったり1にならないことがあります。そんなときは、最後の確率を次の式で調整しましょう。
=1 - SUM(B2:B6) ← 残りの確率を最後のセルに入れる
こうすれば合計がちょうど1になり、#NUM!エラーを防げますよ。
結果が0や空白になるとき
エラーは出ないのに結果が0になる場合は、下限と上限の指定範囲にデータがまったく含まれていない可能性があります。たとえば1~6の目しか入っていないデータに対して「下限=10, 上限=20」を指定すると、当てはまる行がないので結果は0です。
データの最小値・最大値をMIN関数やMAX関数で確認し、下限・上限が実データの範囲に重なっているかをチェックすると早く原因にたどり着けます。
確率テーブルを別シートで管理しているときの参照ミス
確率テーブルを別シートで管理しているチームも多いですよね。その場合は =PROB('確率テーブル'!A2:A7, '確率テーブル'!B2:B7, 3, 5) のようにシート名を含めて参照します。シート名にスペースや日本語が含まれていると、シングルクォートで囲み忘れて #REF! や #NAME? エラーが出ることがあるので注意してください。シート名を変更したときも、PROB関数が参照しているシート名が自動更新されているかを確認すると安心です。
PROB関数と似た関数との使い分け
Googleスプレッドシートには確率を扱う関数がいくつかあります。それぞれの違いを整理しておきましょう。
| 関数 | 用途 | データの種類 |
|---|---|---|
| PROB | 離散データの確率テーブルから確率を合計する | 離散データ(サイコロの目、評価スコアなど) |
| NORM.DIST | 正規分布にもとづいて確率を求める | 連続データ(テスト点数、製品重量など) |
| POISSON.DIST | ポアソン分布にもとづいて確率を求める | 一定期間のイベント発生回数 |
| BINOM.DIST | 二項分布にもとづいて確率を求める | 成功/失敗の試行回数 |
使い分けのポイントはこうです。
- 確率テーブルが手元にある → PROB関数
- データが正規分布に従う前提でOK → NORM.DIST関数
- 「1時間に何件発生するか」のようなカウントデータ → POISSON.DIST関数
- 「10回中何回成功するか」のような二者択一 → BINOM.DIST関数
PROB関数は自前の確率テーブルを使う唯一の関数です。理論的な分布モデルに当てはめにくいデータでも、実績ベースで確率を計算できるのが強みですよ。逆に言うと、確率テーブルの精度がそのまま結果の精度になるので、サンプル数が十分か・極端な外れ値が混ざっていないかは事前に確認しておくのがおすすめです。
よくある質問(FAQ)
PROB関数を使うときに迷いやすいポイントを、Q&A形式でまとめました。
Q1. PROB関数の上限は省略してもいいですか?
はい、省略できます。上限を省略すると、データが下限の値とちょうど一致する確率が返ります。「サイコロで3が出る確率」「評価スコアが5になる確率」のようにピンポイントの確率を求めたい場合は、上限を書かずに =PROB(A2:A7, B2:B7, 3) のように指定すればOKです。
範囲の確率を求めたいときだけ、下限と上限の両方を指定しましょう。
Q2. データに同じ値が複数あっても大丈夫ですか?
データ範囲内に同じ値が複数行ある場合、PROB関数はそれぞれの確率を合計します。たとえば「3」という値が2行あれば、その2行の確率を足した値が「3に一致する確率」として返ります。
ただし、同じ値の行が複数あるのは確率テーブルの作り方として推奨されません。元データから確率テーブルを作るときは、値の重複をなくしてからCOUNTIF関数で集計しましょう。
Q3. 確率の合計がぴったり1にならず#NUM!エラーになります
これはデータから確率を計算したときに、丸め誤差で合計が0.9999や1.0001になっているのが原因です。次の2つの対処法があります。
- 最後のセルだけ
=1 - SUM(B2:B5)のように、残りの確率で埋める - 確率テーブルを作るときに小数点以下の桁数を増やす(例: 4桁→6桁)
実務では1の方法が手軽で確実です。表示は四捨五入されますが、内部の数値は合計1になるのでエラーが消えますよ。
Q4. PROB関数とNORM.DIST関数はどう使い分ければよいですか?
ざっくり言うと「自分で確率テーブルを持っているか、持っていないか」で使い分けます。
- 確率テーブルがすでにある(または実績データから作れる) → PROB関数
- 平均と標準偏差から正規分布を仮定して確率を求めたい → NORM.DIST関数
身長やテストの点数のように「正規分布で近似できる連続データ」はNORM.DIST、商品評価や案件ランクのように「決まった値しか取らない離散データ」はPROB、と覚えておくと迷いません。
Q5. ExcelのPROB関数と挙動は同じですか?
はい、基本的に同じ挙動です。引数の指定方法・エラーの条件・上限省略時の動作も共通なので、Excelで作った関数式をGoogleスプレッドシートにそのまま貼り付けてもほぼ動きます。
ただし、データ範囲の参照方法(シート名の書き方や絶対参照の挙動)は両ツールで細かな違いがあるので、コピー貼り付けする場合は数式の参照先だけ最後に見直しておくと安心です。
Q6. 下限と上限を逆に指定するとどうなりますか?
下限よりも上限のほうが小さい値を指定した場合、PROB関数は #NUM! エラーを返します。たとえば =PROB(A2:A7, B2:B7, 5, 2) のように書くと計算できません。
下限・上限の数値を直接書く場合はミスに気づきやすいのですが、セル参照を使って =PROB(A2:A7, B2:B7, F2, G2) のように書いている場合は、参照先のF2とG2を入れ替えてしまうと気づかないうちにエラーになります。セル参照を使うときは「F2が下限、G2が上限」のようにヘッダを明示しておくと安心です。
Q7. 確率範囲に空白セルが混ざっていてもよいですか?
確率範囲に空白セルがあると、その行は0として扱われます。データの一部だけ確率が不明な場合は確率を0と仮置きするか、確率がわかっている行だけに範囲を絞って計算するとよいでしょう。
ただし、空白セルがあるせいで確率の合計が1にならず #NUM! エラーになることがあります。範囲を指定する前に、空白セルがないかを目視で確認するか、=COUNTBLANK(B2:B7) で空白セルの数を一度チェックしておくとミスを防げます。
まとめ
PROB関数は、データに対応する確率テーブルから特定の範囲の確率を合計する関数です。最後にポイントをおさらいしておきましょう。
- 上限を省略すると、下限の値にちょうど一致する確率を返す
- 下限と上限を両方指定すると、その範囲に収まる確率の合計を返す
- 確率範囲は各値が0以上1以下で、合計が1になる必要がある
- COUNTIF関数と組み合わせれば、元データから確率テーブルを自動生成できる
- 連続データの確率計算にはNORM.DIST関数、試行回数ならBINOM.DIST関数が向いている
- エラーが出たら、まず確率範囲の合計が1かどうかをSUM関数で確認しよう
「このデータが特定の範囲に収まる確率は?」をサッと答えられるようになると、データ分析や報告資料の説得力がぐっと上がります。売上予測、品質管理、営業の案件ランク評価など、活躍する場面はたくさんあるので、ぜひ実際のデータで試してみてくださいね。
