Application.DAvg メソッド (Access)

DAvg 関数を使用して、指定したレコードセット (ドメイン) 内の値のセットの平均を計算します。

構文

DAvg (Expr,Domain, Criteria)

expressionApplication オブジェクトを 表す変数。

パラメーター

名前 必須 / オプション データ型 説明
Expr 必須 String 平均化する数値データを含むフィールドを識別する式。 テーブルまたはクエリのフィールドを表す文字列式、またはそのフィールドのデータを使用して計算を実行する式を指定できます。 Expr_では、テーブル内のフィールドの名前、フォーム上のコントロール、定数、または関数を含めることができます。 Expr に関数が含まれている場合は、組み込み関数またはユーザー定義関数を使用できますが、別のドメイン集計関数や SQL 集計関数は使用できません。
ドメイン 必須 文字列型 (String) 定義域を構成するレコードセットを識別する文字列式。 パラメーターを必要としないクエリには、テーブル名またはクエリ名が指定できます。
Criteria 省略可能 バリアント型 DAvg 関数を実行するデータ範囲を制限するために使用される省略可能な文字列式。 たとえば、 Criteria は、多くの場合、SQL 式の WHERE 句と同じですが、WHERE という単語はありません。 Criteria を省略すると、DAvg 関数はドメイン全体に対して Expr を評価します。 抽出条件に含まれるフィールドは、ドメイン内のフィールドである必要もあります。それ以外の場合、DAvg 関数は Null を返します。

戻り値

バリアント型

注釈

たとえば、輸送コストに関する選択クエリの抽出条件行で DAvg 関数を使用して、輸送コストが平均を超えるレコードに結果を制限できます。 または、計算コントロールで DAvg 関数を含む式を使用し、新しい注文の値の横に前の注文の平均値を表示することもできます。

Null 値が入ったレコードは、計算対象になりません。

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

クエリの [抽出条件] 行で条件を指定するには、 DAvg 関数を使用します。 たとえば、平均注文数量を超える数量で注文されたすべての製品の一覧を表示するとします。 Orders、Order Details、Products テーブルに対してクエリを作成し、[ 製品名] フィールドと [数量 ] フィールドを含め、[数量] フィールドの下の [抽出条件] 行に次の式を含めることができます。

>DAvg("[Quantity]", "Orders")

クエリの計算フィールド式内、または更新クエリの [Update To] 行で DAvg 関数を使用することもできます。

注:

集計クエリの計算フィールド式で DAvg または Avg 関数を使用します。 DAvg 関数を使用する場合、データがグループ化される前に値が平均化されます。 Avg 関数を使用すると、フィールド式の値が平均化される前にデータがグループ化されます。

抽出条件を指定して DAvg 関数が実行されるデータ範囲を制限する必要がある場合は、DAvg 関数を演算コントロールで使用します。 たとえば、愛知県に出荷したときの平均運送料を表示するには、テキスト ボックスの "ControlSource/コントロールソース" プロパティに次のように設定します。

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

単にドメイン内のすべてのレコードを平均する場合は、Avg 関数を使用します。

表示する必要があるフィールドがフォームの基になるレコード ソースにない場合は、モジュールまたはマクロ、またはフォームの計算コントロールで DAvg 関数を使用します。 たとえば、Orders テーブルに基づくフォームがあり、[注文の詳細] テーブルの [数量 ] フィールドを含めて、特定の顧客が注文したアイテムの平均数を表示するとします。 DAvg 関数を使用してこの計算を実行し、フォームにデータを表示します。

ヒント

  • 演算コントロールで DAvg 関数を使う場合は、新しいレコードに移動するたびにコントロールの値が再計算されないように、コントロールをフォーム ヘッダーやフッターに配置することができます。
  • Expr の派生元フィールドのデータ型が数値の場合、DAvg 関数は Double データ型を返します。 演算コントロールで DAvg 関数を使う場合は、処理を高速に実行できるようデータ型変換関数を使ってください。
  • DAvg 関数を使って外部キー側のテーブルのフィールドの平均値を求めることもできますが、必要なフィールドをすべて含んだクエリを作成し、そのクエリに基づいてフォームやレポートを作成する方が効率的です。

次の例では、指定した日付以降に出荷された受注の平均運送料が返されます。 定義域は [受注] テーブルです。 Criteria 引数は、指定された国と出荷日に基づいて、結果のレコードセットを制限します。 キーワード AND は、 Criteria 引数の複数のフィールドを区切るために文字列に含まれていることに注意してください。 DAvg 関数の演算に含まれるすべてのレコードは、この両方の抽出条件に適合しています。

Public Function AvgFreightCost(ByVal strCountry As String, _ 
                               ByVal dteShipDate As Date) As Double 
 
    AvgFreightCost = DAvg("[Freight]", "Orders", _ 
                     "[ShipCountry] = '" & strCountry & _ 
                     "'AND [ShippedDate] >= #" & dteShipDate & "#") 
 
End Function

以下の例は、DAvg 関数でさまざまな種類の抽出条件を使用する方法を示します。

    ' ***************************
    ' Typical Use
    ' Numerical values. Replace "number" with the number to use.
    variable = DAvg("[FieldName]", "TableName", "[Criteria] = number")

    ' Strings.
    ' Numerical values. Replace "string" with the string to use.
    variable = DAvg("[FieldName]", "TableName", "[Criteria]= 'string'")

    ' Dates. Replace "date" with the string to use.
    variable = DAvg("[FieldName]", "TableName", "[Criteria]= #date#")
    ' ***************************

    ' ***************************
    ' Referring to a control on a form
    ' Numerical values
    variable = DAvg("[FieldName]", "TableName", "[Criteria] = " & Forms!FormName!ControlName)

    ' Strings
    variable = DAvg("[FieldName]", "TableName", "[Criteria] = '" & Forms!FormName!ControlName & "'")

    ' Dates
    variable = DAvg("[FieldName]", "TableName", "[Criteria] = #" & Forms!FormName!ControlName & "#")
    ' ***************************

    ' ***************************
    ' Combinations
    ' Multiple types of criteria
    variable = DAvg("[FieldName]", "TableName", "[Criteria1] = " & Forms![FormName]![Control1] _
             & " AND [Criteria2] = '" & Forms![FormName]![Control2] & "'" _
            & " AND [Criteria3] =#" & Forms![FormName]![Control3] & "#")
    
    ' Use two fields from a single record.
    variable = DAvg("[LastName] & ', ' & [FirstName]", "tblPeople", "[PrimaryKey] = 7")
            
    ' Expressions
    variable = DAvg("[Field1] + [Field2]", "tableName", "[PrimaryKey] = 7")
    
    ' Control Structures
    variable = DAvg("IIf([LastName] Like 'Smith', 'True', 'False')", "tableName", "[PrimaryKey] = 7")
    ' ***************************

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。