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