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 を評価します。 criteria に含まれるフィールドは、ドメイン内のフィールドである必要もあります。それ以外の場合、DAvg 関数は Null を返します。 |
解説
Null 値を含むレコードは、平均の計算に含まれません。
マクロ、モジュール、クエリ式、または演算コントロールのいずれで DAvg 関数を使っても、正しく評価されるように、criteria 引数を慎重に構築する必要があります。
DAvg 関数を使用して、クエリの [抽出条件] 行で抽出条件を指定できます。 たとえば、平均の注文数量を超える、大量の注文を受けた製品すべてのリストを表示したいとします。 [受注]、[受注明細]、[製品] テーブルにクエリを作成して、[製品名] フィールドと [数量] フィールドを含め、[数量] フィールドの下の [抽出条件] 行に次の式を使うことができます。
>DAvg("[Quantity]", "Orders")
また、クエリの集計フィールド式、または更新クエリの [更新] 行にある DAvg 関数を使用することもできます。
注: 集計クエリ の集計フィールド式では、DAvg または Avg の両方の関数を使用できます。 DAvg 関数を使用する場合、データをグループ化する前に値の平均が計算がされます。 Avg 関数を使用する場合、フィールド式の値の平均が計算される前にデータがグループ化されます。
抽出条件を特定する必要があるときは、演算コントロールの DAvg 関数を使用して、DAvg 関数が実行されるデータ範囲を制限します。 たとえば、カリフォルニアに出荷される配送コストの平均を表示するには、テキスト ボックスの ControlSource プロパティに次の式を設定します。
=DAvg("[Freight]", "Orders", "[ShipRegion] = 'CA'")
単に domain のすべてのレコードの平均を計算する場合は、Avg 関数を使用します。
表示する必要があるフィールドが、基となるフォームのレコード ソースにない場合は、モジュールやマクロ、フォームの演算コントロールの DAvg 関数を使用できます。 たとえば、[受注] テーブルに基づくフォームがあり、特定の顧客が注文したアイテムの平均数を表示するために、[受注明細] テーブルの [数量] フィールドを含めたいとします。 DAvg 関数を使用して、この計算を実行し、フォームにデータを表示できます。
ヒント
-
演算コントロールで DAvg 関数を使用する場合、このコントロールの値が新しいレコードに移動する度に再計算されないように、フォームのヘッダーやフッターにコントロールを配置する場合があります。
-
expr が導き出すフィールドのデータ型が数字の場合、DAvg 関数は倍精度浮動小数点データ型を返します。 演算コントロールで DAvg 関数を使用する場合は、パフォーマンスを向上させるために、式にデータ型の変換関数を指定します。
-
DAvg 関数を使って外部テーブルのフィールドの値の平均を特定できますが、必要なすべてのフィールドを含むクエリを作成してから、そのクエリに基づいてフォームやレポートを作成する方が効率的な場合があります。
注: この関数を使用する場合、domain 内のレコードに対する未保存の変更は含まれません。 変更した値に基づいて DAvg 関数を実行する場合は、[データ] タブの [レコード] にある [レコードの保存] をクリックして、別のレコードへフォーカスを移動するか、または Update メソッドを使用して、最初に変更を保存する必要があります。
例
注: 次の例は、Visual Basic for Applications (VBA) モジュールでのこの関数の使用方法を示しています。 VBA の使用方法の詳細については、[検索] の横にあるドロップダウン リストで [開発者用リファレンス] を選び、検索ボックスに検索する用語を入力します。
次の関数では、指定した日付以降に出荷された注文の配送コストの平均を返します。 domain は、[受注] テーブルです。 criteria 引数は、指定した国/地域および出荷日に基づく結果のレコード セットを制限します。 criteria 引数で複数のフィールドを分割するために、文字列にキーワード AND が含まれることに注意してください。 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#