DAvg 関数を使用して、指定したレコードセット (ドメイン) 内の値のセットの平均を計算できます。 Visual Basic for Applications (VBA) モジュール、マクロ、クエリ式、または計算コントロールで DAvg 関数を使用します。
たとえば、配送コストの選択クエリの抽出条件行に DAvg 関数を使用して、配送コストが平均を超えるレコードの結果に限定することができます。 または、演算コントロールの DAvg 関数を含む式を使用し、新しい注文の値の横に過去の注文の平均値を表示することができます。
構文
DAvg(expr, domain [, criteria] )
DAvg 関数構文の引数は次のとおりです。
| 引数 | 説明 |
|---|---|
| expr | 必須。 平均が必要な数値データのフィールドを識別する式です。 テーブルまたはクエリ内のフィールドを識別する文字列式、またはそのフィールド内のデータに対して計算を実行する式を指定できます。 expr では、テーブル内のフィールドの名前、フォーム上のコントロール、定数、または関数を含めることができます。 expr に関数が含まれている場合は、組み込み関数またはユーザー定義関数を使用できますが、別のドメイン集計関数や SQL 集計関数は使用できません。 |
| domain | 必須。 定義域を構成するレコード セットを識別する文字列式。 テーブル名の場合もあれば、パラメーターを必要としないクエリのクエリ名の場合もあります。 |
| criteria | 省略可能です。 DAvg 関数が実行されるデータの範囲を制限するために使用される文字列式。 たとえば、 条件 は、多くの場合、WHERE という単語を含まない SQL 式の WHERE 句と同じです。 条件を省略すると、DAvg 関数はドメイン全体に対して expr を評価します。 条件に含まれるフィールドは、ドメイン内のフィールドである必要もあります。それ以外の場合、DAvg 関数は Null を返します。 |
解説
Null 値を含むレコードは、平均の計算に含まれません。
マクロまたはモジュール、クエリ式、または計算されたコントロールで DAvg 関数を使用する場合でも、 引数 criteria を慎重に作成して、正しく評価されるようにする必要があります。
DAvg 関数を使用して、クエリの [抽出条件] 行で抽出条件を指定できます。 たとえば、平均の注文数量を超える、大量の注文を受けた製品すべてのリストを表示したいとします。 [受注]、[受注明細]、[製品] テーブルにクエリを作成して、[製品名] フィールドと [数量] フィールドを含め、[数量] フィールドの下の [抽出条件] 行に次の式を使うことができます。
>DAvg("[Quantity]", "Orders")
クエリの計算フィールド式内、または更新クエリの [Update To] 行で DAvg 関数を使用することもできます。
注
集計クエリでは、計算フィールド式で DAvg 関数または Avg 関数を使用できます。 DAvg 関数を使用する場合、データをグループ化する前に値の平均が計算がされます。 Avg 関数を使用する場合、フィールド式の値の平均が計算される前にデータがグループ化されます。
抽出条件を特定する必要があるときは、演算コントロールの DAvg 関数を使用して、DAvg 関数が実行されるデータ範囲を制限します。 たとえば、カリフォルニアに出荷される配送コストの平均を表示するには、テキスト ボックスの ControlSource プロパティに次の式を設定します。
=DAvg("[Freight]", "Orders", "[ShipRegion] = 'CA'")
単にドメイン内のすべてのレコードを平均する場合は、Avg 関数を使用します。
表示する必要があるフィールドが、基となるフォームのレコード ソースにない場合は、モジュールやマクロ、フォームの演算コントロールの DAvg 関数を使用できます。 たとえば、[受注] テーブルに基づくフォームがあり、特定の顧客が注文したアイテムの平均数を表示するために、[受注明細] テーブルの [数量] フィールドを含めたいとします。 DAvg 関数を使用して、この計算を実行し、フォームにデータを表示できます。
ヒント
- 演算コントロールで DAvg 関数を使用する場合、このコントロールの値が新しいレコードに移動する度に再計算されないように、フォームのヘッダーやフッターにコントロールを配置する場合があります。
- expr の派生元のフィールドのデータ型が数値の場合、DAvg 関数は Double データ型を返します。 演算コントロールで DAvg 関数を使用する場合は、パフォーマンスを向上させるために、式にデータ型の変換関数を指定します。
- DAvg 関数を使用して外部テーブル内のフィールドの値の平均を決定できますが、必要なすべてのフィールドを含むクエリを作成し、そのクエリに基づいてフォームまたはレポートを作成する方が効率的な場合があります。
注
この関数を使用する場合、 ドメイン 内のレコードに対する未保存の変更は含まれません。 変更した値に基づいて DAvg 関数を実行する場合は、[データ] タブの [レコード] にある [レコードの保存] をクリックして、別のレコードへフォーカスを移動するか、または Update メソッドを使用して、最初に変更を保存する必要があります。
例
注
次の例は、Visual Basic for Applications (VBA) モジュールでのこの関数の使用方法を示しています。 VBA の使用方法の詳細については、[検索] の横にあるドロップダウン リストで [開発者用リファレンス] を選び、検索ボックスに検索する用語を入力します。
次の関数では、指定した日付以降に出荷された注文の配送コストの平均を返します。 domain は、[受注] テーブルです。 criteria 引数は、指定された国/地域と出荷日に基づいて、結果のレコードセットを制限します。 キーワード (keyword) AND は、criteria 引数の複数のフィールドを区切るために文字列に含まれていることに注意してください。 DAvg 関数の計算に含まれるすべてのレコードに、これらの両方の抽出条件が含まれます。
Public Function AvgFreightCost _
(ByVal strCountryRegion As String, _
ByVal dteShipDate As Date) As Double
AvgFreightCost = DAvg("[Freight]", "Orders", _
"[ShipCountryRegion] = '" & strCountryRegion & _
"'AND [ShippedDate] >= #" & dteShipDate & "#")
End Function
関数を呼び出すには、イミディエイト ウィンドウ内の次のコード行を使用します。
:AvgFreightCost "UK", #1/1/96#