「全店舗の売上データのばらつきを正確に計算したい」「製品の全在庫ロット間の品質のばらつきを見たい」。こんな場面、フィルタで絞り込んでからSTDEVP関数を使っていませんか。
条件が変わるたびにフィルタをかけ直すのは地味に手間です。共有シートだと他の人の表示にも影響してしまうので、気を使う場面も多いですよね。
そんなときに便利なのがDSTDEVP関数です。条件を別のセル範囲に書いておくだけで、該当するデータの母標準偏差(ばらつきの指標)を自動で返してくれます。この記事では、スプレッドシートのDSTDEVP関数の基本から複数条件・OR条件の応用、DSTDEV関数との使い分けまでまとめて紹介します。
スプレッドシートのDSTDEVP関数とは?
DSTDEVP関数(読み方: ディースタンダードデビエーションポピュレーション)は、データベース形式の表から条件に合うレコードを探し、指定した列の値の母標準偏差を返す関数です。
名前は「Database STDEVP(データベースの母標準偏差)」の略です。DSUM(条件付き合計)やDAVERAGE(条件付き平均)と同じ「データベース関数」の仲間になります。
DSTDEVP関数の特徴をまとめると、次のとおりです。
- 条件をセル範囲(条件範囲)で指定するスタイル
- 条件範囲を書き換えるだけで集計条件をすぐ切り替えられる
- 複数条件(AND条件・OR条件)にも対応
- 見出し付きのリスト形式のデータが前提
- 対象データを「母集団(全体)」とみなし、nで割る母標準偏差を返す
NOTE
DSTDEVP関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同じ関数があるので、ファイルのやり取りでも安心です。
DSTDEV関数との違い(標本 vs 母集団)
DSTDEVP関数とDSTDEV関数の違いは「データを標本とみなすか、母集団とみなすか」です。
| 比較項目 | DSTDEV関数 | DSTDEVP関数 |
|---|---|---|
| データの扱い | 標本(サンプル)とみなす | 母集団(全体)とみなす |
| 計算式 | 偏差二乗和を n-1 で割る | 偏差二乗和を n で割る |
| 結果の傾向 | やや大きめの値 | やや小さめの値 |
| 用途 | 一部のデータから全体を推定したいとき | 手元のデータが対象全体であるとき |
使い分けのポイント:
- アンケートの回答者(全社員ではなく一部) → DSTDEV関数(標本)
- 全社員・全店舗・全在庫など、対象が母集団そのもの → DSTDEVP関数(母集団)
- 判断に迷ったらDSTDEV関数(標本) が実務では無難
DSTDEVP関数の書き方(構文と引数)
基本構文
=DSTDEVP(データベース, フィールド, 条件)
引数は3つです。すべて必須で、省略はできません。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| データベース | 必須 | 見出し行を含むデータ範囲(例: A1:D100) |
| フィールド | 必須 | 母標準偏差を求める列の見出し名(文字列)または列番号(数値) |
| 条件 | 必須 | 条件を記述したセル範囲(見出し行+条件行) |
それぞれ詳しく見ていきましょう。
データベース(第1引数)
データベースには、見出し行を含めたデータ範囲を指定します。先頭行に列の見出し(「部署」「商品名」「売上」など)が入っている必要があります。
フィールド(第2引数)
母標準偏差を求めたい列を指定します。指定方法は2つあります。
- 文字列で指定:
"売上"のように、見出しと同じ文字列をダブルクォーテーションで囲む - 数値で指定: データベースの左端列を1として、列の位置を数値で指定する(4列目なら
4)
文字列で指定するほうが、あとから見たとき何の列かわかりやすいのでおすすめです。
条件(第3引数)
条件範囲には、見出し行と条件行の2行以上のセル範囲を指定します。これがDSTDEVP関数の最大の特徴です。
TIP
フィールドに列番号を使う場合、データベース範囲の左端が1です。シートのA列が1とは限らないので注意してください。
DSTDEVP関数の基本的な使い方
サンプルデータ
次のような売上データを使って説明します。全店舗の月間売上をまとめた表です(この表が全店舗の完全なデータとします)。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 月 | エリア | 店舗 | 売上 |
| 2 | 1 | 東日本 | 東京 | 120 |
| 3 | 2 | 東日本 | 東京 | 150 |
| 4 | 3 | 東日本 | 横浜 | 180 |
| 5 | 4 | 東日本 | 横浜 | 90 |
| 6 | 5 | 西日本 | 大阪 | 100 |
| 7 | 6 | 西日本 | 神戸 | 110 |
| 8 | 7 | 西日本 | 神戸 | 105 |
条件範囲の設定方法
DSTDEVP関数の条件は、別のセル範囲に書きます。
条件範囲は次のルールで作ります。
- 1行目に見出しを書く — データベースの見出しと完全に同じ文字列を使う
- 2行目に条件値を書く — 一致させたい値を入力する
たとえば「東日本」エリアの売上の母標準偏差を求めたい場合、シートの空いているエリア(たとえばF1:F2)に次のように書きます。
| F | |
|---|---|
| 1 | エリア |
| 2 | 東日本 |
数式はこうなります。
=DSTDEVP(A1:D8, "売上", F1:F2)
結果は東日本の4件(120、150、180、90)の母標準偏差で 約33.54 です。これらの4件が「対象の全て」という前提で計算しています(n=4で割る)。
TIP
条件範囲の見出しは、データベースの見出しと1文字でも違うと正しく動きません。コピー&ペーストで作ると確実ですよ。
DSTDEV関数と結果の比較
同じデータで DSTDEV 関数と比較してみます。
=DSTDEV(A1:D8, "売上", F1:F2) → 約38.73(n-1で割る)
=DSTDEVP(A1:D8, "売上", F1:F2) → 約33.54(nで割る)
DSTDEVP関数のほうが小さい値になります。このデータが「全体(母集団)」ならDSTDEVP、「一部(標本)」ならDSTDEVを使います。
比較演算子を使った条件
条件値には比較演算子も使えます。
| 条件値の書き方 | 意味 |
|---|---|
東日本 | 「東日本」と完全一致 |
>=100 | 100以上 |
<150 | 150未満 |
<>東日本 | 「東日本」以外 |
たとえば「売上が100以上」のレコードに絞って母標準偏差を見たい場合は、条件範囲をこう書きます。
| F | |
|---|---|
| 1 | 売上 |
| 2 | >=100 |
=DSTDEVP(A1:D8, "売上", F1:F2)
100以上の6件(120、150、180、100、110、105)の母標準偏差 約28.57 が返ります。
DSTDEVP関数の実践的な使い方・応用例
複数条件(AND条件)で母標準偏差を求める
「東日本エリア」かつ「売上が100以上」のように、複数の条件をすべて満たすレコードで母標準偏差を求めたい場合です。
AND条件は、条件範囲の同じ行に複数の見出し・条件値を横に並べて書きます。
| F | G | |
|---|---|---|
| 1 | エリア | 売上 |
| 2 | 東日本 | >=100 |
=DSTDEVP(A1:D8, "売上", F1:G2)
東日本で売上100以上の3件(120、150、180)の母標準偏差 約24.49 が返ります。
OR条件で母標準偏差を求める
「東日本」または「西日本」のように、どちらかの条件に合うレコードから母標準偏差を求めたい場合です。
OR条件は、条件値を別の行に書くのがポイントです。
| F | |
|---|---|
| 1 | エリア |
| 2 | 東日本 |
| 3 | 西日本 |
=DSTDEVP(A1:D8, "売上", F1:F3)
全7件の売上の母標準偏差 約28.57 が返ります。
同じ行に書くとAND条件、別の行に書くとOR条件。このルールを覚えておきましょう。
全店舗の売上ばらつきをエリア別に比較する
全店舗データが手元にある場合、エリアごとの売上ばらつきをDSTDEVP関数で比較できます。
条件範囲のF2セルを「東日本」→「西日本」と書き換えるだけで、DSTDEVP関数の結果が切り替わります。数式を修正する必要はありません。
ドロップダウンリスト(データの入力規則)と組み合わせると、選択するだけでエリア別の母標準偏差をサッと確認できる簡易ダッシュボードが作れますよ。
全在庫ロットの品質ばらつきをラインごとにチェックする
製造データで、全ロットの検査データが手元にある場合、ラインごとの品質ばらつきをDSTDEVP関数で確認できます。
| A | B | C | |
|---|---|---|---|
| 1 | 製品 | ライン | 寸法 |
| 2 | 製品A | 第1 | 10.2 |
| 3 | 製品A | 第1 | 10.1 |
| 4 | 製品A | 第2 | 10.5 |
| 5 | 製品A | 第2 | 9.8 |
| 6 | 製品B | 第1 | 20.3 |
「製品A・第1ライン」の全ロットデータ(これが母集団)の寸法ばらつきを確認する場合です。
=DSTDEVP(A1:C6, "寸法", E1:F2)
条件範囲(E1:F2)には「製品」「ライン」の見出し+「製品A」「第1」を入れておきます。全ロットが対象なので、DSTDEVP関数(nで割る)を使います。
よくあるエラーと対処法
DSTDEVP関数で「思った結果にならない」ケースをまとめました。
| 症状 | 原因 | 対処法 |
|---|---|---|
#NUM! エラー | 対象列に数値が1つも含まれていない | 数値が入っている列をフィールドに指定する |
| 結果が0になる | 対象データの値がすべて同じ(ばらつきがない) | そのデータ内では母標準偏差=0が正しい結果 |
| 結果が想定より大きくなる | 条件範囲に空白行が含まれている | 条件範囲を必要な行だけに絞る(空白行は「すべて一致」と解釈される) |
#VALUE! エラー | フィールドに存在しない列名を指定している | データベースの見出しと同じ文字列を使う |
| DSTDEVと結果が違う | 計算式の違い(n vs n-1) | 意図どおりの関数を選んでいるか確認する |
| 条件が部分一致になる | 条件値にアスタリスクが含まれている | 完全一致にしたい場合は ="=東日本" のように先頭に = を付ける |
| 文字列の列でエラーになる | DSTDEVP関数は数値列の母標準偏差を返す関数 | 文字列の列を指定すると計算対象にならない。数値列を指定すること |
| 件数0件で0が返る | 条件に一致するレコードがない(0件) | 条件範囲の見出し・条件値を見直してレコード件数をDCOUNT関数で確認する |
TIP
条件に合うレコードが何件あるかを確認したいときはDCOUNT関数が便利です。DCOUNT関数で件数を確認してから、DSTDEVP関数で母標準偏差を求めると安心です。
まとめ
DSTDEVP関数は、データベース形式の表から条件に合うデータの母標準偏差(ばらつきの指標)を求める関数です。
ポイントを整理します。
- 構文は
=DSTDEVP(データベース, フィールド, 条件)で、引数は3つ - 条件は数式内ではなくセル範囲(条件範囲)に書くのが特徴
- 条件範囲は「見出し行+条件行」のセットで作る
- 同じ行に条件を横並びにすればAND条件、別の行にすればOR条件
- 条件セルの値を変えるだけで分析対象を切り替えられる
- DSTDEV関数は標本(n-1で割る)、DSTDEVP関数は母集団(nで割る)
- 手元のデータが対象全体(全社員・全店舗・全在庫など)のときにDSTDEVPを使う
- 判断に迷ったらDSTDEV関数(標本)が実務では無難
- 対象データの値がすべて同じなら結果は0(ばらつきなし)
全店舗の売上ばらつき比較や、全ラインの品質安定性チェックで威力を発揮する関数です。まずは簡単な表で =DSTDEVP(A1:D8, "売上", F1:F2) から試してみてください。
