Excel VBAでDCOUNTA関数を使い複数条件に一致するデータ数を集計する方法|AND条件・範囲指定の応用

Excelのデータベース関数「DCOUNTA」は、複数の列にまたがる条件を設定して、該当する非空セルの件数を集計することができる便利な関数です。
VBAからこの関数を呼び出せば、手動でフィルターやカウント処理をせずとも、条件付きのデータ集計を自動化することができます。

本記事では、DCOUNTA関数をVBAで使い、複数の条件に一致する件数を取得する方法をご紹介いたします。


目次

想定される活用シーン

  • 「性別が女」かつ「年齢が30歳以上」かつ「参加回数が100回未満」のようなAND条件付きカウントを行いたい。
  • 複雑な条件を一時的に設定し、あとでクリアしたい。
  • データベース形式の表を使って、条件付きの集計処理を自動化したい。

VBAコードの例

以下のコードでは、範囲 B2:E12 にあるデータを対象に、性別が「女」、年齢が30以上、回数が100未満の行数をDCOUNTAで取得しています。

Sub CountDataWithMultipleCriteria()

    Dim matchCount As Long

    ' 条件範囲を一時的に設定
    Range("G1:I1").Value = Array("性別", "年齢", "参加回数")
    Range("G2:I2").Value = Array("女", ">=30", "<100")

    ' 条件に一致する件数を取得(「名前」列を対象にカウント)
    matchCount = WorksheetFunction.DCountA( _
        Range("B2:E12"), _
        "名前", _
        Range("G1:I2"))

    MsgBox "条件に一致するデータ件数:" & matchCount & " 件", vbInformation

    ' 条件を削除
    Range("G1:I2").ClearContents

End Sub

コードの解説

処理項目説明
DCountA(データ範囲, フィールド名, 条件範囲)DCOUNTA関数をVBAから呼び出します。
"名前"カウント対象となる列名です。列見出しと一致している必要があります。
Range("G1:I2")条件範囲。1行目が項目名、2行目が条件となります。

条件の例

  • G2:I2 = {"女", ">=30", "<100"}性別が女かつ、年齢が30以上かつ、参加回数が100未満のデータだけカウント。

注意点

  • フィールド名(例:「名前」)は、データ範囲の見出しと完全一致している必要があります。
  • 条件はセルに書き込んで設定し、DCountA関数に渡す必要があります(数式的条件は使用不可)。
  • 条件設定セルは最後にClearContentsで削除しておくと、元データを汚さずに済みます。

まとめ

Excel VBAでDCOUNTA関数を使えば、複数列にまたがるAND条件で一致するデータ数を手軽に集計することができます。
フィルターや手動の集計に頼らず、毎回の作業を自動化できるため、報告書作成やデータ確認業務で特に効果を発揮します。

条件を動的に書き換えることで、柔軟な集計処理が実現できる点も大きな魅力です。
複雑な条件でも一瞬で処理できるこの方法を、ぜひ日々の業務に取り入れてみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次