DVar 関数および DVarP 関数を使うと、指定したレコードのセット (ドメイン) に含まれる値セット全体の分散を推定できます。 DVar および DVarP 関数は、Visual Basic for Applications (VBA) モジュール、マクロ、クエリ式、またはフォームやレポートの演算コントロールで使います。
母集団全体の分散を推定するには 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 を返します。 |
解説
domain の参照するレコードが 2 つ未満の場合、または criteria を満たすレコードが 2 つ未満の場合、DVar 関数および DVarP 関数は、分散を計算できないことを示す Null を返します。
マクロ、モジュール、クエリ式、または演算コントロールのいずれで DSum または DVarP 関数を使う場合でも、正しく評価されるように criteria 引数を慎重に構築する必要があります。
DVar および DVarP 関数を使って、選択クエリの Criteria 行の条件、クエリの計算フィールド式の条件、または更新クエリの Update To 行の条件を指定できます。
注: 集計クエリの計算フィールド式では、DVar および DVarP 関数、または Var および VarP 関数を使うことができます。 DVar または DVarP 関数を使うと、データがグループ化される前に値が計算がされます。 Var または VarP 関数を使うと、フィールド式の値が評価される前にデータがグループ化されます。
関数が実行されるデータ範囲を制限するために criteria を指定する必要があるときは、演算コントロールで DVar 関数および DVarP 関数を使います。 たとえば、カリフォルニアに出荷される注文の分散を表示するには、テキスト ボックスの ControlSource プロパティを次の式に設定します。
=DVar("[Freight]", "Orders", "[ShipRegion] = 'CA'")
domain 内のレコード全体に対する分散を計算するだけの場合は、Var または VarP 関数を使います。
注: これらの関数では、domain 内のレコードに対する保存されていない変更は、計算に含まれません。 変更した値に基づいて DVar 関数または DVarP 関数を実行する場合は、[データ] タブの [レコード] にある [レコードの保存] をクリックするか、別のレコードにフォーカスを移動するか、または Update メソッドを使って、最初に変更を保存する必要があります。
クエリの例
式 |
結果 |
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 & "'")