特定の条件でセルをカウントできるCOUNTIF関数はとても便利ですよね。COUNTIF関数は、Excel VBAでも利用することができます。
この記事では、Excel VBAでのCOUNTIF関数の使い方について解説していきます。条件やセル範囲を変数で指定するサンプルもご紹介しています。
VBAでCOUNTIF関数を使う方法
Excel VBAでは以下の構文でCOUNTIF関数を利用できます。
WorksheetFunction.CountIf(セル範囲, 条件)
以下の表を例に、VBAで様々な条件のCOUNTIFを利用する方法を解説します。
「文字列」の条件でカウントする場合
商品分類が「セーター」の条件でカウントしたい場合、以下のように記述します。セル範囲はRangeを使い、条件は文字列で指定します。
WorksheetFunction.CountIf(Range("C5:C13"), "セーター")
コード全体のサンプルはこちらです。
Sub カウント()
Dim cnt As Integer
' 商品分類が「セーター」であるセルをカウント
cnt = WorksheetFunction.CountIf(Range("C5:C13"), "セーター")
Range("C2").Value = cnt
End Sub
マクロをボタンに登録して実行すると、商品分類が「セーター」である数「3」を取得することができました。
- 実行結果
「ワイルドカード」を条件に使う
もちろんワイルドカードを利用して文字列を曖昧検索することもできます。
Sub カウント()
Dim cnt As Integer
' 商品分類が「セーター」であるセルをカウント
cnt = WorksheetFunction.CountIf(Range("C5:C13"), "セータ*")
Range("C2").Value = cnt
End Sub
「数値」の条件でカウントする場合
数値の一致を指定したい場合のサンプルです。
Sub カウント()
Dim cnt As Integer
' 在庫が100であるセルをカウント
cnt = WorksheetFunction.CountIf(Range("F5:F13"), 100)
Range("C2").Value = cnt
End Sub
- 実行結果
「比較演算子」を使ってカウントする
比較演算子を利用する場合のサンプルです。
比較演算子ごと、文字列としてダブルクォート「”」で囲む必要がある点に注意しましょう。
Sub カウント()
Dim cnt As Integer
' 在庫が100以上であるセルをカウント
cnt = WorksheetFunction.CountIf(Range("F5:F13"), ">=100")
Range("C2").Value = cnt
End Sub
VBAのCOUNTIFで変数を使ってカウントする方法
COUNTIF関数のセル範囲、条件を変数に入れて利用することもできます。
参照範囲を変数に入れる場合はVariant配列を利用すると便利です。
代入する際には「Set」が必要なので注意してください。
Sub カウント()
Dim cnt As Integer
Dim searchRange As Variant
Dim productName As String
'参照範囲を設定
Set searchRange = Range("C5:C13")
'商品分類を設定
productName = "セーター"
' 設定条件でカウント
cnt = WorksheetFunction.CountIf(searchRange, productName)
Range("C2").Value = cnt
End Sub
以上、Excel VBAでCOUNTIF関数を利用する方法でした。
コメント