DVar、DVarP 関数

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

DVar 関数と DVarP 関数を使用して、指定したレコードセット (ドメイン) 内の値のセット間の分散を見積もることができます。 フォームまたはレポートで、Visual Basic for Applications (VBA) モジュール、マクロ、クエリ式、または計算コントロールで DVar 関数と DVarP 関数を使用します。

母集団全体の分散を推定するには DVarP 関数を使い、母集団の標本の分散を推定するには DVar 関数を使います。

たとえば、DVar 関数を使うと、学生の試験の点数の分散を計算できます。

構文

DVar(expr, domain [, criteria] )

DVarP(expr, domain [, criteria] )

DVar 関数および DVarP 関数の引数は次のとおりです。

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

解説

ドメインが 2 つ未満のレコードを参照している場合、または 2 つ未満のレコードが条件を満たす場合、DVar 関数と DVarP 関数は Null を返し、分散を計算できないことを示します。

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

DVar および DVarP 関数を使って、選択クエリの Criteria 行の条件、クエリの計算フィールド式の条件、または更新クエリの Update To 行の条件を指定できます。

集計クエリでは、計算フィールド式で DVar 関数と DVarP 関数、または Var 関数と VarP 関数を使用できます。 DVar または DVarP 関数を使うと、データがグループ化される前に値が計算がされます。 Var または VarP 関数を使うと、フィールド式の値が評価される前にデータがグループ化されます。

関数を実行するデータ範囲を制限する条件を指定する必要がある場合は、計算コントロールで DVar 関数と DVarP 関数を使用します。 たとえば、カリフォルニアに出荷される注文の分散を表示するには、テキスト ボックスの ControlSource プロパティを次の式に設定します。

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

単にドメイン内のすべてのレコードの標準偏差を見つけたい場合は、Var 関数または VarP 関数を使用します。

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

クエリの例

Expression 結果
SELECT DVar("unitprice","productSales","unitprice>140") AS DVar_Value, DVarP("unitprice","productSales","unitprice<140") AS DVarP_Value FROM productSales GROUP BY DVar("unitprice","productSales","unitprice>140"), DVarP("unitprice","productSales","unitprice<140"); "unitprice" が 140 を超えるテーブル "ProductSales" から "UnitPrice" の分散を計算し、結果をDVar_Valueで表示します。 また、"unitprice" が 140 未満である "UnitPrice" (指定されたデータを母集団全体として考慮) の分散を計算し、結果をDVarP_Valueで表示します。

VBA の例

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

次の例では、英国に出荷される注文の母集団または母集団の標本に対する偏差の推定を取得します。 定義域は Orders テーブルです。 criteria 引数は、結果のレコード セットを ShipCountryRegion が UK と等しいレコードに制限します。

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

次の例では、criteria 引数に変数 strCountryRegion を使用して推定値を返します。 文字列式には単一引用符 (') が含まれているため、文字列を連結すると、文字列リテラル UK は単一引用符で囲まれます。

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