ただセルなどの個数を数えるCountはプロパティですが、条件付きで数えるCountIfは関数となります。
従って書き方がちょっと変わりますが、概ね順番入れ替えて文字列を追加すれば動きます。
CountIf関数(単一条件)
条件に一致するセル等の個数を数える
WorksheetFunction.CountIf(範囲, 条件)
WorksheetFunction.CountIf(範囲, 条件)
![vba countif1](https://sunagitsune.com/wp-content/uploads/2021/11/vba-countif1.png)
条件を付けずにセルの数を数える場合、CountプロパティをRangeオブジェクトにくっつければ取得できました。
![vba countif2](https://sunagitsune.com/wp-content/uploads/2021/11/vba-countif2.png)
条件付きのCountIfの場合は、CountIfの中に範囲と条件を入れて、
![vba countif4](https://sunagitsune.com/wp-content/uploads/2021/11/vba-countif4.png)
さらに頭にWorksheetFunctionを付けます。
' vba
' A1~C4セルの中で「a」が入力されたセルを数える
MsgBox WorksheetFunction.CountIf(Range("A1:C4"), "a")
![vba countif3](https://sunagitsune.com/wp-content/uploads/2021/11/vba-countif3.png)
実行結果です。範囲内で「a」が入力されたセルは2つあるので、2という値が戻されます。
![vba countif5](https://sunagitsune.com/wp-content/uploads/2021/11/vba-countif5.png)
なお、条件は完全一致です。検索条件が「a」であれば、「abc」などはひっかかりません。
セルに入力された値を条件にする
![vba countif7](https://sunagitsune.com/wp-content/uploads/2021/11/vba-countif7.png)
たとえばD2セルの値を検索条件にしたいなら、
WorksheetFunction.CountIf(Range("A1:C4"), Range("D2").Value)
のようになります。比較演算子で条件を指定
![vba countif8](https://sunagitsune.com/wp-content/uploads/2021/11/vba-countif8.png)
演算子で条件を指定する場合は、
>値で値より大きい、>=値で値以上、<値で値未満、<=値で値以下です。
WorksheetFunction.CountIf(Range("A1:C4"), ">1")
のように""
でくくります。>値で値より大きい、>=値で値以上、<値で値未満、<=値で値以下です。
![vba countif excel 1](https://sunagitsune.com/wp-content/uploads/2021/11/vba-countif-excel-1.png)
「D2セルより値が大きい」であれば、
WorksheetFunction.CountIf(Range("A1:C4"), ">" & Range("D2"))
のようになります。ワイルドカード(部分一致)
![vba countif excel 2](https://sunagitsune.com/wp-content/uploads/2021/11/vba-countif-excel-2.png)
ワークシート関数同様ワイルドカードも使用可能です。
abcは該当しますが、bacやdeaはaから始まらないのでカウントされません。
CountIf(Range("A1:C4"), "a*")
の場合、頭がaの文字列のみカウントされます。abcは該当しますが、bacやdeaはaから始まらないのでカウントされません。
![vba countif excel 3](https://sunagitsune.com/wp-content/uploads/2021/11/vba-countif-excel-3.png)
*は0文字でもOKなので、
CountIf(Range("A1:C4"), "*a*")
とすれば、文字列のどこかに「a」があればカウントされます。![vba countif excel 4](https://sunagitsune.com/wp-content/uploads/2021/11/vba-countif-excel-4.png)
CountIf(Range("A1:C4"), "a??")
とすれば、頭がaかつ3文字の文字列のみカウントされます。![](https://sunagitsune.com/wp-content/uploads/2021/04/sheep-4490437_1280-160x90.jpg)
Excel(エクセル):数える、カウント
Excelで個数を数える、カウントする方法まとめです。
セルの数を数える
範囲内の数字の入ったセルの個数、データの入ったセルの個数を数えるには、それぞれCount関数、CountA関数を使います。
空白セルの個...
![](https://sunagitsune.com/wp-content/uploads/2018/12/mathematics-1509559_1280-160x90.jpg)
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。
コメント