大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、「CountIf関数」を使う方法について、解説していきます。方法は2つあって、「WorksheetFunction」と「数式埋め込み」の方法です。CountIf関数は、「ワイルドカード」や「比較演算子」が使えます。「変数」や「セルの値」をうまく組み合わせて使っていきましょう。

はじめに

この記事では、VBAで「CountIf関数」を使う方法について、ご紹介します。

VBAでCountIf関数を使うには、「WorksheetFunction」と「数式埋め込み」を使う方法があります。

CountIf関数は、次の機能が使えます。

  • ワイルドカード
  • 比較演算子
  • 変数を使う
  • セルの値を使う

という感じです。

VBAで「CountIf関数」を使いこなして、VBAコードをシンプルにしていきましょう。

では、VBAで「CountIf関数」を使う方法について、解説していきます。

この記事で紹介すること

  • VBAで「CountIf関数」を使う方法

目次から見たい項目へ移動すると便利ですよ。

目次

VBAコードまとめ

VBAコードまとめ

'■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関数」に入力する引数は、関数を使うときと同じで次のようになります。

'CountIfの引数
A = WorksheetFunction.CountIf(セル範囲, 条件)

では、VBAでCountIf関数を使ってみます。

CountIf関数を使ってみる 

VBAで、「CountIf関数」を使ってみます。

「"B"」の個数をカウントしてみます。

Sub TEST1()
    
    '「"B"」をカウント
    Range("C2") = WorksheetFunction.CountIf(Range("A:A"), "B")

End Sub

表を用意しておきます。

表を用意

表を用意

では、VBAコードを実行してみます。

「"B"」のセルをカウント

「

結果は、「3」個となりました。

「"B"」のセルをカウントできています。

ワイルドカードを使う

CountIf関数では、ワイルドカードを使うことができます。

ワイルドカードは、次の2つがあります。

  • 「*」:すべての値
  • 「?」:すべての値。ただし1文字

という感じです。

ワイルドカードを使って、「"B"」を含むセルをカウントしてみます。

Sub TEST2()
    
    '「"B"」を含むセルをカウント
    Range("C2") = WorksheetFunction.CountIf(Range("A:A"), "*B*")
    
End Sub

表を用意しておきます。

表を用意

表を用意

では、VBAコードを実行してみます。

「"B"」を含むセルをカウント

「

結果は、「4」個となりました。

「"B"」を含むセルをカウントできています。

比較演算子を使う

CountIf関数は、「比較演算子」を使うことができます。

比較演算子は、次のものが使えます。

  • 「">値"」 :値より大きい
  • 「"<値"」 :値より小さい
  • 「">=値"」:値以上
  • 「"<=値"」:値以下
  • 「"<>値"」:値以外
  • 「""」  :空白
  • 「"<>"」 :空白以外

という感じです。

比較演算子を使って、「5以上」のセルをカウントしてみます。

Sub TEST3()
    
    '「5以上」のセルをカウント
    Range("C2") = WorksheetFunction.CountIf(Range("A:A"), ">=5")
    
End Sub

表を用意しておきます。

表を用意

表を用意

では、VBAコードを実行してみます。

「5以上」のセルをカウント

「5以上」のセルをカウント

結果は、「5」個となりました。

「5以上」のセルをカウントできています。

変数を使う

WorksheetFunctionを使ってCountIf関数を使う場合は、「変数」を使う場合が多いです。

条件を変数で可変にできるので便利です。

Sub TEST4()
    
    '変数を設定
    Dim A
    A = "B"
    
    '「"B"」をカウント
    Range("C2") = WorksheetFunction.CountIf(Range("A:A"), A)
    
End Sub

表を用意しておきます。

表を用意

表を用意

では、VBAコードを実行してみます。

変数を使ってカウント

変数を使ってカウント

結果は、「3」個となりました。

変数を使ってカウントできています。

セルの値を使う

セルの値を使って、CountIf関数を使ってみます。

「"B"」のセルをカウントしてみます。

Sub TEST5()
    
    '「"B"」をカウント
    Range("C2") = WorksheetFunction.CountIf(Range("A:A"), Range("C1"))
    
End Sub

条件をセルに入力しておきます。

条件をセルに入力

条件をセルに入力

では、VBAコードを実行してみます。

セルの値を使ってカウント

セルの値を使ってカウント

結果は、「3」個となりました。

セルの値を使ってカウントできています。

埋め込み数式を使ってCountIf関数を使う

もう一つの方法が、「埋め込み数式」を使ってCountIf関数を使うという方法です。

セルに数式を埋め込んでCountIf関数を使う

セルに「数式を埋め込んで」CountIf関数を使ってみます。

「"B"」のセルをカウントしてみます。

Sub TEST6()
    
    '「"B"」をカウント
    Range("C2") = "=COUNTIF(A:A,""B"")"
    Range("C2").Value = Range("C2").Value '値に変換
    
End Sub

数式ではなく値をセルに入力したいので、値に変換しています。

表を用意しておきます。

表を用意

表を用意

では、VBAコードを実行してみます。

「"B"」のセルをカウント

「

結果は、「3」個となりました。

「"B"」のセルをカウントできています。

数式をコピーして使うと簡単

「埋め込み数式」を使う場合は、数式をコピーして使うと簡単です。

数式をコピーして使う

数式をコピーして使う

一旦数式をセルに入力して、問題ないかを確認した後に、数式をコピーして使うと確実です。

ワイルドカードを使う

ワイルドカードを使って、数式埋め込みでCounIf関数を使ってみます。

「"B"」を含むセルをカウントします。

Sub TEST7()
    
    '「"B"」を含むセルをカウント
    Range("C2") = "=COUNTIF(A:A,""*B*"")"
    Range("C2").Value = Range("C2").Value '値に変換
    
End Sub

表を用意しておきます。

表を用意

表を用意

では、VBAコードを実行してみます。

「"B"」を含むセルをカウント

「

結果は、「5」個となりました。

「"B"」を含むセルをカウントできています。

比較演算子を使う

比較演算子を使って、数式埋め込みでCountIf関数を使ってみます。

「5以上」のセルをカウントします。

Sub TEST8()
    
    '「5以上」のセルをカウント
    Range("C2") = "=COUNTIF(A:A,"">=5"")"
    Range("C2").Value = Range("C2").Value '値に変換
    
End Sub

表を用意しておきます。

表を用意

表を用意

では、VBAコードを実行してみます。

「5以上」のセルをカウント

「5以上」のセルをカウント

結果は、「5」個となりました。

「5以上」のセルをカウントできています。

変数を使う

埋め込み数式でも、「変数」を使うことができます。

変数の値を、「""」で囲むところがポイントです。

「"B"」の値をカウントします。

Sub TEST9()
    
    '変数を設定
    Dim A
    A = """B"""
    
    '「"B"」のセルをカウント
    Range("C2") = "=COUNTIF(A:A," & A & ")"
    Range("C2").Value = Range("C2").Value '値に変換
    
End Sub

表を用意しておきます。

表を用意

表を用意

では、VBAコードを実行してみます。

変数を使ってカウント

変数を使ってカウント

結果は、「3」個となりました。

変数を使ってカウントできました。

セルの値を使う

数式埋め込みの場合は、「セルの値」を使った方がシンプルに使うことができます。

「"B"」のセルのカウントしてみます。

Sub TEST10()
    
    '「"B"」のセルをカウント
    Range("C2") = "=COUNTIF(A:A,C1)"
    Range("C2").Value = Range("C2").Value '値に変換
    
End Sub

表を用意しておきます。

表を用意

表を用意

では、VBAコードを実行してみます。

セルの値を使ってカウント

セルの値を使ってカウント

結果は、「3」個となりました。

セルの値を使ってカウントできています。

おわりに

この記事では、VBAで「CountIf関数」を使う方法について、ご紹介しました。

VBAでCountIf関数を使うには、「WorksheetFunction」と「数式埋め込み」を使う方法があります。

CountIf関数は、次の機能が使えます。

  • ワイルドカード
  • 比較演算子
  • 変数を使う
  • セルの値を使う

という感じです。

VBAで「CountIf関数」を使いこなして、VBAコードをシンプルにしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す