大体でIT
大体でIT
Excel VBAで、「CountIf関数」を使う方法について、解説していきます。方法は2つあって、「WorksheetFunction」と「数式埋め込み」の方法です。CountIf関数は、「ワイルドカード」や「比較演算子」が使えます。「変数」や「セルの値」をうまく組み合わせて使っていきましょう。
この記事では、VBAで「CountIf関数」を使う方法について、ご紹介します。
VBAでCountIf関数を使うには、「WorksheetFunction」と「数式埋め込み」を使う方法があります。
- ワイルドカード
- 比較演算子
- 変数を使う
- セルの値を使う
VBAで「CountIf関数」を使いこなして、VBAコードをシンプルにしていきましょう。
では、VBAで「CountIf関数」を使う方法について、解説していきます。
'■WorksheetFunctionを使う
Range("C2") = WorksheetFunction.CountIf(Range("A:A"), "B") '「"B"」をカウント
Range("C2") = WorksheetFunction.CountIf(Range("A:A"), "*B*") '「"B"」を含むセルをカウント
Range("C2") = WorksheetFunction.CountIf(Range("A:A"), ">=5") '「5以上」のセルをカウント
'変数を使ってカウント
Dim A
A = "B"
Range("C2") = WorksheetFunction.CountIf(Range("A:A"), A) '「"B"」をカウント
'セルの値を使ってカウント
Range("C2") = WorksheetFunction.CountIf(Range("A:A"), Range("C1")) '「"B"」をカウント
'■数式を埋め込んで使う
Range("C2") = "=COUNTIF(A:A,""B"")" '「"B"」をカウント
Range("C2") = "=COUNTIF(A:A,""*B*"")" '「"B"」を含むセルをカウント
Range("C2") = "=COUNTIF(A:A,"">=5"")" '「5以上」のセルをカウント
'変数を使う
Dim A
A = """B"""
Range("C2") = "=COUNTIF(A:A," & A & ")" '「"B"」のセルをカウント
'セルの値を使ってカウント
Range("C2") = "=COUNTIF(A:A,C1)" '「"B"」のセルをカウント
WorksheetFunctionでCountIf関数を使う
「WorksheetFunction」でCountIf関数を使ってみます。
「CountIf関数」に入力する引数は、関数を使うときと同じで次のようになります。
'CountIfの引数
A = WorksheetFunction.CountIf(セル範囲, 条件)
Sub TEST1()
'「"B"」をカウント
Range("C2") = WorksheetFunction.CountIf(Range("A:A"), "B")
End Sub
表を用意
「"B"」のセルをカウント
CountIf関数では、ワイルドカードを使うことができます。
- 「*」:すべての値
- 「?」:すべての値。ただし1文字
ワイルドカードを使って、「"B"」を含むセルをカウントしてみます。
Sub TEST2()
'「"B"」を含むセルをカウント
Range("C2") = WorksheetFunction.CountIf(Range("A:A"), "*B*")
End Sub
表を用意
「"B"」を含むセルをカウント
CountIf関数は、「比較演算子」を使うことができます。
- 「">値"」 :値より大きい
- 「"<値"」 :値より小さい
- 「">=値"」:値以上
- 「"<=値"」:値以下
- 「"<>値"」:値以外
- 「""」 :空白
- 「"<>"」 :空白以外
比較演算子を使って、「5以上」のセルをカウントしてみます。
Sub TEST3()
'「5以上」のセルをカウント
Range("C2") = WorksheetFunction.CountIf(Range("A:A"), ">=5")
End Sub
表を用意
「5以上」のセルをカウント
WorksheetFunctionを使ってCountIf関数を使う場合は、「変数」を使う場合が多いです。
Sub TEST4()
'変数を設定
Dim A
A = "B"
'「"B"」をカウント
Range("C2") = WorksheetFunction.CountIf(Range("A:A"), A)
End Sub
表を用意
変数を使ってカウント
セルの値を使って、CountIf関数を使ってみます。
Sub TEST5()
'「"B"」をカウント
Range("C2") = WorksheetFunction.CountIf(Range("A:A"), Range("C1"))
End Sub
条件をセルに入力
セルの値を使ってカウント
もう一つの方法が、「埋め込み数式」を使ってCountIf関数を使うという方法です。
セルに「数式を埋め込んで」CountIf関数を使ってみます。
Sub TEST6()
'「"B"」をカウント
Range("C2") = "=COUNTIF(A:A,""B"")"
Range("C2").Value = Range("C2").Value '値に変換
End Sub
数式ではなく値をセルに入力したいので、値に変換しています。
表を用意
「"B"」のセルをカウント
「埋め込み数式」を使う場合は、数式をコピーして使うと簡単です。
数式をコピーして使う
一旦数式をセルに入力して、問題ないかを確認した後に、数式をコピーして使うと確実です。
ワイルドカードを使って、数式埋め込みでCounIf関数を使ってみます。
Sub TEST7()
'「"B"」を含むセルをカウント
Range("C2") = "=COUNTIF(A:A,""*B*"")"
Range("C2").Value = Range("C2").Value '値に変換
End Sub
表を用意
「"B"」を含むセルをカウント
比較演算子を使って、数式埋め込みでCountIf関数を使ってみます。
Sub TEST8()
'「5以上」のセルをカウント
Range("C2") = "=COUNTIF(A:A,"">=5"")"
Range("C2").Value = Range("C2").Value '値に変換
End Sub
表を用意
「5以上」のセルをカウント
Sub TEST9()
'変数を設定
Dim A
A = """B"""
'「"B"」のセルをカウント
Range("C2") = "=COUNTIF(A:A," & A & ")"
Range("C2").Value = Range("C2").Value '値に変換
End Sub
表を用意
変数を使ってカウント
数式埋め込みの場合は、「セルの値」を使った方がシンプルに使うことができます。
Sub TEST10()
'「"B"」のセルをカウント
Range("C2") = "=COUNTIF(A:A,C1)"
Range("C2").Value = Range("C2").Value '値に変換
End Sub
表を用意
セルの値を使ってカウント
この記事では、VBAで「CountIf関数」を使う方法について、ご紹介しました。
VBAでCountIf関数を使うには、「WorksheetFunction」と「数式埋め込み」を使う方法があります。
- ワイルドカード
- 比較演算子
- 変数を使う
- セルの値を使う
VBAで「CountIf関数」を使いこなして、VBAコードをシンプルにしていきましょう。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。