Excel VBA(マクロ)で条件付きでセルを数える方法/CountIf関数の使い方

salad IT

ただセルなどの個数を数えるCountはプロパティですが、条件付きで数えるCountIfは関数となります。
従って書き方がちょっと変わりますが、概ね順番入れ替えて文字列を追加すれば動きます。

スポンサーリンク

CountIf関数(単一条件)

条件に一致するセル等の個数を数える
WorksheetFunction.CountIf(範囲, 条件)
vba countif1
条件を付けずにセルの数を数える場合、CountプロパティをRangeオブジェクトにくっつければ取得できました。
vba countif2
条件付きのCountIfの場合は、CountIfの中に範囲と条件を入れて、
vba countif4
さらに頭にWorksheetFunctionを付けます。
' vba
' A1~C4セルの中で「a」が入力されたセルを数える
MsgBox WorksheetFunction.CountIf(Range("A1:C4"), "a")
vba countif3
実行結果です。範囲内で「a」が入力されたセルは2つあるので、2という値が戻されます。
vba countif5
なお、条件は完全一致です。検索条件が「a」であれば、「abc」などはひっかかりません。

セルに入力された値を条件にする

vba countif7
たとえばD2セルの値を検索条件にしたいなら、WorksheetFunction.CountIf(Range("A1:C4"), Range("D2").Value)のようになります。

比較演算子で条件を指定

vba countif8
演算子で条件を指定する場合は、WorksheetFunction.CountIf(Range("A1:C4"), ">1")のように""でくくります。
>値で値より大きい、>=値で値以上、<値で値未満、<=値で値以下です。
vba countif excel 1
「D2セルより値が大きい」であれば、WorksheetFunction.CountIf(Range("A1:C4"), ">" & Range("D2"))のようになります。

ワイルドカード(部分一致)

vba countif excel 2
ワークシート関数同様ワイルドカードも使用可能です。
CountIf(Range("A1:C4"), "a*")の場合、頭がaの文字列のみカウントされます。
abcは該当しますが、bacやdeaはaから始まらないのでカウントされません。
vba countif excel 3
*は0文字でもOKなので、CountIf(Range("A1:C4"), "*a*")とすれば、文字列のどこかに「a」があればカウントされます。
vba countif excel 4
CountIf(Range("A1:C4"), "a??")とすれば、頭がaかつ3文字の文字列のみカウントされます。
Excel(エクセル):数える、カウント
Excelで個数を数える、カウントする方法まとめです。 セルの数を数える 範囲内の数字の入ったセルの個数、データの入ったセルの個数を数えるには、それぞれCount関数、CountA関数を使います。 空白セルの個...
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。

コメント