この記事では、Microsoft Excel の DAVERAGE 関数の数式の構文と使用方法について説明します。
説明
リストまたはデータベースのレコードで指定されたフィールド (列) を検索し、条件を満たすレコードの平均値を返します。
書式
DAVERAGE(データベース, フィールド, 検索条件)
DAVERAGE 関数の書式には、次の引数があります。
- データベース は、リストまたはデータベースを構成するセル範囲です。 データベースは、行 (レコード) と列 (フィールド) にデータを関連付けたリストです。 リストの先頭の行には、各列の見出しが入力されている必要があります。
- フィールド は、関数で使用される列を示します。 フィールドには、半角の二重引用符 (") で囲んだ "樹齢" や "歩どまり" などのような文字列、またはリストでの列の位置を示す引用符なしの番号 (1 番目の列を示す場合は 1、2 番目の列を示す場合は 2) を指定します。
- 抽出条件 は、指定した条件を含むセルの範囲です。 列見出しと検索条件を指定するセルが少なくとも 1 つずつ含まれている場合は、検索条件に任意のセル範囲を指定できます。
解説
- セル範囲に検索条件を入力し、検索条件を表す引数として使用することができます。検索条件範囲には、列見出しとその下のセルがそれぞれ 1 つ以上含まれている必要があります。
たとえば、セル範囲 G1:G2 のセル G1 に "収入" という列見出し、セル G2 に 10,000 という数値が入力されている場合、このセル範囲に "年収額" という名前を定義して、データベース関数の検索条件の引数として指定することができます。 - 検索条件はワークシートの任意の範囲に入力することができますが、リストの最終行の次の行は使用しないでください。 リストにデータを追加すると、そのデータはリストの最終行の次の行に追加されます。 リストのすぐ下の行にデータが入力されていると、新しいデータを追加できません。
- 検索条件範囲がリストと重なり合っていないことを確認します。
- データベース内の列全体に対して検索条件を指定するには、検索条件範囲の列見出しの下に空白行を 1 行挿入します。
使用例
次の表のサンプル データをコピーし、新しい Excel ワークシートのセル A1 に貼り付けます。 数式を選択して、F2 キーを押し、さらに Enter キーを押すと、結果が表示されます。 必要に応じて、列幅を調整してすべてのデータを表示してください。
| 木 | [高さ] | 年齢 | 収穫高 | 利益 | [高さ] |
|---|---|---|---|---|---|
| =りんご | >10 | <16 | |||
| =梨 | |||||
| 木 | 高さ | 樹齢 | 収穫高 | 利益 | |
| りんご | 18 | 20 | 14 | 105 | |
| 梨 | 12 | 12 | 10 | 96 | |
| さくらんぼ | 13 | 14 | 9 | 105 | |
| りんご | 14 | 15 | 10 | 75 | |
| 梨 | 9 | 8 | 8 | 76.8 | |
| りんご | 8 | 9 | 6 | 45 | |
| 数式 | 説明 | 結果 | |||
| =DAVERAGE(A4:E10, "歩どまり", A1:B2) | 樹高が 10 以上のりんごの木の歩どまりの平均値を求めます。 | 12 | |||
| =DAVERAGE(A4:E10, 3, A4:E10) | 上のデータベース内のすべての木の平均樹齢を求めます。 | 13 |
検索条件の例
- セルに等号を入力すると、数式であることが示されます。 等号を含む文字列を表示するには、文字列と等号を二重引用符で囲みます。
"=西脇"
式 (数式、演算子、および文字列の組み合わせ) を入力する場合や計算に使用しない等号を表示する場合も二重引用符で囲みます。 次に例を示します。
=''=entry''
ここで、entry は検索するテキストまたは値です。 次に例を示します。
| セルに入力する内容 | Excel による評価と表示 |
|---|---|
| ="=西脇" | =西脇 |
| ="=3000" | =3000 |
- テキスト データの抽出では、大文字と小文字は区別されません。 ただし、特定の数式を使用すると、大文字と小文字を区別した検索を実行できます。 具体的な例については、後述の「大文字と小文字を区別して文字列を抽出する」を参照してください。
次のセクションでは、複雑な検索条件の例を紹介します。
1 つの列に複数の検索条件を指定して、いずれかに一致するデータを抽出する
ブールロジック: (Salesperson = "Davolio" OR Salesperson = "Buchanan")
1 つの列に複数の検索条件を指定して、いずれかに一致するデータを抽出する場合、同じ列の個別の行に検索条件を入力します。
次のようにデータ範囲 (A6:C10) と検索条件 (B1:B3) を指定すると、販売員が "西脇" または "吉田" であるすべての行が表示されます (A8:C10)。
| A | B | C | |
|---|---|---|---|
| 1 | 型 | 営業担当者 | 売上 |
| 2 | =西脇 | ||
| 3 | =吉田 | ||
| 4 | |||
| 5 | |||
| 6 | 型 | 営業担当者 | 売上 |
| 7 | 飲料 | 須山 | ¥5,122 |
| 8 | 肉類 | 西脇 | ¥450 |
| 9 | 農産物 | 吉田 | ¥6,328 |
| 10 | 農産物 | 西脇 | ¥6,544 |
複数の列に検索条件を指定して、すべてに一致するデータを抽出する
ブールロジック: (Type = "Produce" AND Sales > 1000)
複数の列に検索条件を指定して、すべてに一致するデータを抽出する場合、同じ行に検索条件を入力します。
次のようにデータ範囲 (A6:C10) と検索条件範囲 (A1:C2) を指定すると、種別が "農産物" で売上が 1,000 より大きいすべての行が表示されます (A9:C10)。
| A | B | C | |
|---|---|---|---|
| 1 | 型 | 営業担当者 | 売上 |
| 2 | =農産物 | >1000 | |
| 3 | |||
| 4 | |||
| 5 | |||
| 6 | 型 | 営業担当者 | 売上 |
| 7 | 飲料 | 須山 | ¥5,122 |
| 8 | 肉類 | 西脇 | ¥450 |
| 9 | 農産物 | 吉田 | ¥6,328 |
| 10 | 農産物 | 西脇 | ¥6,544 |
複数の列に検索条件を指定して、いずれかの条件に一致するデータを抽出する
ブールロジック: (Type = "Produce" OR Salesperson = "Davolio")
複数の列に検索条件を指定して、いずれかの条件に一致するデータを抽出する場合、別々の行に検索条件を入力します。
次のようにデータ範囲 (A6:C10) と検索条件 (A1:B3) を指定すると、種別が "農産物" であるか、販売員が "西脇" であるすべての行が表示されます (A8:C10)。
| A | B | C | |
|---|---|---|---|
| 1 | 型 | 営業担当者 | 売上 |
| 2 | =農産物 | ||
| 3 | =西脇 | ||
| 4 | |||
| 5 | |||
| 6 | 型 | 営業担当者 | 売上 |
| 7 | 飲料 | 須山 | ¥5,122 |
| 8 | 肉類 | 西脇 | ¥450 |
| 9 | 農産物 | 吉田 | ¥6,328 |
| 10 | 農産物 | 西脇 | ¥6,544 |
複数の列を対象とする 2 セット以上の検索条件を指定して、一致するデータを抽出する
ブールロジック: ( (Salesperson = "Davolio" AND Sales >3000) OR (Salesperson = "Buchanan" and Sales > 1500) )
複数の列を対象とする 2 セット以上の検索条件を指定して、一致するデータを抽出するには、個別の行に検索条件セットを入力します。
次のようにデータ範囲 (A6:C10) と検索条件範囲 (B1:C3) を指定すると、販売員が "西脇" で売上が 3,000 より大きい行、または、販売員が "吉田" で売上が 1,500 より大きい行が表示されます (A9:C10)。
| A | B | C | |
|---|---|---|---|
| 1 | 型 | 営業担当者 | 売上 |
| 2 | =西脇 | >3000 | |
| 3 | =吉田 | >1500 | |
| 4 | |||
| 5 | |||
| 6 | 型 | 営業担当者 | 売上 |
| 7 | 飲料 | 須山 | ¥5,122 |
| 8 | 肉類 | 西脇 | ¥450 |
| 9 | 農産物 | 吉田 | ¥6,328 |
| 10 | 農産物 | 西脇 | ¥6,544 |
1 つの列を対象とする 2 セット以上の検索条件を指定して、一致するデータを抽出する
ブールロジック: ( (Sales > 6000 AND Sales < 6500) OR (Sales < 500) )
1 つの列を対象とする 2 セット以上の検索条件を指定するには、複数の列に同じ列見出しを付けて指定します。
次のようにデータ範囲 (A6:C10) と検索条件 (C1:D3) を指定すると、売上が 6,000 ~ 6,500 である行、および、500 より小さい行が表示されます (A8:C10)。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 型 | 営業担当者 | 売上 | 売上 |
| 2 | >6000 | <6500 | ||
| 3 | <500 | |||
| 4 | ||||
| 5 | ||||
| 6 | 型 | 営業担当者 | 売上 | |
| 7 | 飲料 | 須山 | ¥5,122 | |
| 8 | 肉類 | 西脇 | ¥450 | |
| 9 | 農産物 | 吉田 | ¥6,328 | |
| 10 | 農産物 | 西脇 | ¥6,544 |
一部の文字だけが一致している文字列を検索する
一部の文字だけが一致する文字列を検索するには、次のいずれかを行います。
- 特定の文字または文字列から始まる文字列値を含む行を検索するには、等号 (=) を使用せずにその文字または文字列を入力します。 たとえば、検索条件として「西」と入力すると、"西脇"、"西田"、"西崎" などが検索されます。
- ワイルドカード文字を使用します。
比較検索条件として、次のワイルドカード文字を使用できます。
| 入力する文字列 | 検索対象 |
|---|---|
| ? (疑問符) | 任意の 1 文字 たとえば、「インターフェ?ス」と入力すると "インターフェイス" や "インターフェース" が検索されます。 |
| * (アスタリスク) | 任意の文字数の任意の文字 たとえば、「Win*」と入力すると "Win98" や "Win2000" が検索されます。 |
| ˜ (チルダ) (?、*、または ˜ の前に入力) | 疑問符、アスタリスク、またはチルダ たとえば、fy91~? "fy91?" が検索されます |
次のようにデータ範囲 (A6:C10) と検索条件 (A1:B3) を指定すると、種別が "肉" で始まるか、販売員列の 2 文字目が "山" である行が表示されます (A7:C9)。
| A | B | C | |
|---|---|---|---|
| 1 | 型 | 営業担当者 | 売上 |
| 2 | 肉 | ||
| 3 | =?山* | ||
| 4 | |||
| 5 | |||
| 6 | 型 | 営業担当者 | 売上 |
| 7 | 飲料 | 須山 | ¥5,122 |
| 8 | 肉類 | 西脇 | ¥450 |
| 9 | 農産物 | 吉田 | ¥6,328 |
| 10 | 農産物 | 西脇 | ¥6,544 |
数式の計算結果を検索条件として指定する
数式の計算結果を検索条件として使用できます。 次の点に注意してください。
- TRUE または FALSE に評価される数式しか使用できません。
- 数式は通常と同じように入力する必要があります。次のような式を入力することはできません。
=''=entry'' - 列見出しを検索条件のラベルに指定することはできません。検索条件のラベルを指定しないか、セル範囲内の列見出しとは異なるラベル (以降の例では、"平均値評価" と "完全一致") を指定します。
相対セル参照や範囲名の代わりに数式で列ラベルを使用する場合、Excel は #NAME などのエラー値を表示しますか?または #VALUE! などのエラー値が表示されます。 このエラーはリスト範囲のフィルター処理の結果には影響しないため、無視してかまいません。 - 抽出条件に使用する数式では、相対参照を使用して、最初の行の対応するセルを参照する必要があります (下の例では C7 と A7)。
- それ以外の参照には、絶対参照を使用します。
以降のサブセクションでは、数式の結果を検索条件に用いる例を紹介しています。
データ範囲のすべての値の平均より大きい値を抽出する
次のようにデータ範囲 (A6:D10) と検索条件範囲 (D1:D2) を指定すると、売上列が、すべての売上 (C7:C10) の平均を超えている行が表示されます。 数式の中で "C7" は、データ範囲における抽出列 (C 列) の先頭行 (7 行目) を参照しています。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 型 | 営業担当者 | 売上 | 平均値評価 |
| 2 | =C7>AVERAGE($C$7:$C$10) | |||
| 3 | ||||
| 4 | ||||
| 5 | ||||
| 6 | 型 | 営業担当者 | 売上 | |
| 7 | 飲料 | 須山 | ¥5,122 | |
| 8 | 肉類 | 西脇 | ¥450 | |
| 9 | 農産物 | 吉田 | ¥6,328 | |
| 10 | 農産物 | 西脇 | ¥6,544 |
大文字と小文字を区別して文字列を抽出する
次のようにデータ範囲 (A6:D10) と検索条件範囲 (D1:D2) を指定し、EXACT 関数を使用すると、大文字と小文字を区別した検索が実行され、種別列が "農産物" である行が表示されます (A10:C10)。 数式の中で "A7" は、データ範囲における抽出列 (A 列) の先頭行 (7 行目) を参照しています。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 型 | 営業担当者 | 売上 | 完全一致 |
| 2 | =EXACT(A7, "農産物") | |||
| 3 | ||||
| 4 | ||||
| 5 | ||||
| 6 | 型 | 営業担当者 | 売上 | |
| 7 | 飲料 | 須山 | ¥5,122 | |
| 8 | 肉類 | 西脇 | ¥450 | |
| 9 | 農産物 | 吉田 | ¥6,328 | |
| 10 | 農産物 | 西脇 | ¥6,544 |