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