DStDev、DStDevP 関数

適用先
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

DStDev 関数と DStDevP 関数を使用すると、指定したレコード セット (ドメイン) 内の値セットの標準偏差を推定できます。 Visual Basic for Applications (VBA) モジュール、マクロ、クエリ式、またはフォームまたはレポートの計算コントロールで DStDev 関数と DStDevP 関数を使用します。

DStDevP 関数は母集団を評価し、DStDev 関数は母集団の標本を評価します。

たとえば、モジュールの DStDev 関数を使用して、学生の試験得点の標準偏差を計算できます。

構文

DStDev(expr, domain [, criteria] )

DStDevP(expr, domain [, criteria] )

DStDev 関数および DStDevP 関数には、次の引数があります。

引数 説明
expr 必須。 標準偏差を見つける数値フィールドを識別する式。 テーブルまたはクエリからフィールドを識別する文字列式、またはそのフィールド内のデータに対して計算を実行する式を指定することができます。 expr では、テーブル内のフィールド名、フォーム上のコントロール、定数、または関数の名前を含めることができます。 expr に関数が含まれている場合は、組み込み関数またはユーザー定義関数にすることができますが、別のドメイン集約関数または SQL 集約関数は含まれません。
domain 必須。 定義域を構成するレコード セットを識別する文字列式。 テーブル名の場合もあれば、パラメーターを必要としないクエリのクエリ名の場合もあります。
criteria 省略可能です。 DStDev または DStDevP 関数が実行されるデータの範囲を制限するために使用される文字列式。 たとえば、 抽出条件 は、多くの場合、SQL 式の WHERE 句と等しく、WHERE という単語は含まれません。 条件を省略した場合、DStDev 関数と DStDevP 関数は、ドメイン全体に対して expr を評価します。 条件に含まれるフィールドは、ドメイン内のフィールドでもあります。それ以外の場合、DStDev 関数と DStDevP 関数は Null を返します。

解説

domain が参照するレコードが 2 つ未満の場合、または条件を満たすレコードが 2 つ未満の場合、DStDev 関数と DStDevP 関数は Null を返し、標準偏差が計算できないことを示します。

DStDev 関数または DStDevP 関数をマクロ、モジュール、クエリ式、または演算コントロールのいずれで使用する場合でも、条件引数が正しく評価されるように慎重に criteria 引数を作成する必要があります。

DStDev 関数および DStDevP 関数を使用して、選択クエリの [抽出条件] 行で抽出条件を指定できます。 たとえば、[受注] テーブルと [商品] テーブルを作成して、平均および運送料を足した数値が標準偏差を超える商品をすべて表示することができます。 [運送料] フィールドの下の [抽出条件] 行には、次の式が含まれます。

>(DStDev("[Freight]", "Orders") + DAvg("[Freight]", "Orders"))

DStDev 関数と DStDevP 関数は、クエリの集計フィールド式、または更新クエリの [更新先] 行で使用できます。

注

集計クエリの集計フィールド式では、 DStDev 関数と DStDevP 関数、または StDev 関数と StDevP 関数を使用できます。 DStDev 関数または DStDevP 関数を使用する場合、データをグループ化する前に値が計算がされます。 StDev 関数または StDevP 関数を使用する場合、フィールド式の値が評価される前にデータがグループ化されます。

抽出条件を特定する必要があるときには、演算コントロールの DStDev 関数および DStDevP 関数を使用して、関数が実行されるデータ範囲を制限します。 たとえば、カリフォルニアに出荷される注文の標準偏差を表示するには、テキスト ボックスの ControlSource プロパティを次の式に設定します。

=DStDev("[Freight]", "Orders", "[ShipRegion] = 'CA'")

ドメイン内のすべてのレコードの標準偏差を調べるだけの場合は、StDev または StDevP 関数を使用します。

ヒント expr の派生元となるフィールドのデータ型が数値の場合、DStDev 関数と DStDevP 関数は Double データ型を返します。 演算コントロールで DStDev 関数または DStDevP 関数を使用する場合は、パフォーマンスを向上させるために、式にデータ型の変換関数を指定します。

注

これらの関数を使用する場合、domain 内のレコードに対して行った変更は、保存しないと指定されません。 変更した値に基づいて DStDev 関数または DStDevP 関数を実行する場合は、[データ] タブの [レコード] にある [レコードの保存] をクリックして、別のレコードへフォーカスを移動するか、または Update メソッドを使用して、最初に変更を保存する必要があります。

クエリの例

Expression 結果
SELECT DStDev("unitprice","productSales","unitprice>140") AS Expr1, DStDevP("unitprice","productSales","unitprice<140") AS Expr2 FROM productSales GROUP BY DStDev("unitprice","productSales","unitprice>140"), DStDevP("unitprice","productSales","unitprice<140"); "Unitprice" が 140 より大きいテーブル "ProductSales" から "UnitPrice" の Standard Deviation (指定されたデータをサンプルとして考慮) を計算し、Expr1 に結果を表示します。 また、「unitprice」が 140 未満の「UnitPrice」の Standard Deviation (指定されたデータを母集団全体として考慮) を計算し、結果を Expr2 に表示します。
SELECT DStDev("unitprice","productSales","unitprice>140") AS DstDev, DStDevP("unitprice","productSales","unitprice<140") AS DstDevP FROM productSales GROUP BY DStDev("unitprice","productSales","unitprice>140"), DStDevP("unitprice","productSales","unitprice<140"); "Unitprice" が 140 より大きいテーブル "ProductSales" から "UnitPrice" の Standard Deviation (指定されたデータをサンプルとして考慮) を計算し、結果を DstDev に表示します。 また、"UnitPrice" が 140 未満の "UnitPrice" の Standard Deviation (指定されたデータを母集団全体として考慮) を計算し、結果を DstDevP に表示します。

VBA の例

注

次の例は、Visual Basic for Applications (VBA) モジュールでのこの関数の使用方法を示しています。 VBA の使用方法の詳細については、[検索] の横にあるドロップダウン リストで [開発者用リファレンス] を選び、検索ボックスに検索する用語を入力します。

次の例では、英国に出荷される注文の母集団と母集団の標本が返されます。 domain は、[受注] テーブルです。 抽出条件引数は、結果のレコード セットを、[出荷先の国または地域] の値が UK であるレコード セットに制限します。

Dim dblX As Double
Dim dblY As Double
' Sample estimate.
dblX = DStDev("[Freight]", "Orders", _
    "[ShipCountryRegion] = 'UK'")
' Population estimate.
dblY = DStDevP("[Freight]", "Orders", _
    "[ShipCountryRegion] = 'UK'")

次の例では、検索条件の引数に変数 strCountryRegion を指定して、同じ推定値を計算します。 文字列式には単一引用符 (') が含まれているため、文字列を連結すると、文字列リテラル UK が単一引用符で囲まれることに注意してください。

Dim strCountryRegion As String
Dim dblX As Double
Dim dblY As Double
strCountryRegion = "UK"
dblX = DStDev("[Freight]", "Orders", _
    "[ShipCountryRegion] = '" & strCountryRegion & "'")
dblY = DStDevP("[Freight]", "Orders", _
    "[ShipCountryRegion] = '" & strCountryRegion & "'")