【エクセルマクロ】COUNTIF関数を使いこなす:使用例9選

ExcelVBA-COUNTIF関数-アイキャッチ ExcelVBA

エクセルマクロで、Replace関数を使って文字を置換するコードを記載しています。

このページのマクロコードは、コピペで使えます。
ぜひお試しください😉

COUNTIF関数(特定文字をカウント)

以下のマクロを実行すると、指定の用語をカウントします。


Sub 特定の単語をカウント()
    Dim countResult As Long

    countResult = WorksheetFunction.CountIf(Range("A:A"), "りんご")

    MsgBox "商品名がりんご: " & countResult
End Sub

 
A列で「りんご」のセル数をカウントして、メッセージボックスに表示します。


 
 

COUNTIF関数(特定文字を含むセルをカウント)

以下のマクロを実行すると、ワイルドカードを使って特定文字を含むセルをカウントします。


Sub 特定の単語を含むセルを数える()
    Dim countResult As Long

    countResult = WorksheetFunction.CountIf(Range("B:B"), "*ジャム*")

    MsgBox "備考に「ジャム」を含むセルの数: " & countResult
End Sub

 
A列で「ジャム」のセル数をカウントして、メッセージボックスに表示します。


 
 

COUNTIF関数(特定文字を含むセルをカウント配列使用)

以下のマクロを実行すると、配列を使って特定文字を含むセルをカウントします。


Sub 特定の単語をカウント()
    Dim countResult As Long
    Dim searchWords As Variant
    Dim i As Long

    ' 検索する単語を配列に設定
    searchWords = Array("りんご", "なし", "もも")

    ' 各単語をカウント
    For i = 0 To UBound(searchWords)
        countResult = countResult + WorksheetFunction.CountIf(Range("A:A"), searchWords(i))
    Next i

    ' 結果を表示
    MsgBox "該当するセルの数: " & countResult
End Sub

 

配列Arrayに代入した単語をカウントして、メッセージボックスに表示します。


 
 

COUNTIF関数(複数条件の組み合わせをカウント)

以下のマクロを実行すると、特定文字を含むセルをカウントします。


Sub 複数条件の組み合わせをカウント()
    Dim dataRange As Range
    Dim countResult As Long
    Dim minVal As Integer
    Dim searchText As String
    
    ' データが入っている範囲を取得
    Set dataRange = Range("A2:B11")
    
    ' 数値の条件を設定
    minVal = 20
    
    ' テキストの条件を設定
    searchText = "良い"
    
    ' 複数条件を組み合わせてセルの数をカウント
    countResult = Application.WorksheetFunction.CountIfs(dataRange.Columns(1), _
        ">=" & minVal, dataRange.Columns(2), searchText)
    
    ' 結果を表示
    MsgBox "数値が20以上かつテキストが「良い」を含むセルの数: " & countResult
End Sub

 
A列が20以上で、B列が「良い」をカウントして、メッセージボックスに表示します。


 
 

COUNTIF関数(10以上をカウント)

以下のマクロを実行すると、比較演算子を使って数値が10以上のセルをカウントします。


Sub 指定数値以上のセルカウント()
    Dim countResult As Long

    countResult = WorksheetFunction.CountIf(Range("B:B"), ">=10")

    MsgBox "数量が10以上の商品名の個数: " & countResult
End Sub

 
B列の数字が10以上のセルをカウントして、メッセージボックスに表示します。


 
 

COUNTIF関数(10以上20以下をカウント)

以下のマクロを実行すると、数値が10以上20以下のセルをカウントします。


Sub 指定数値以上以下のセルカウント()
    Dim countResult As Long

    countResult = Application.WorksheetFunction.CountIf(Range("B:B"), ">=10") - _
        Application.WorksheetFunction.CountIf(Range("B:B"), ">20")

    MsgBox "数量が10以上かつ20以下の商品名の個数: " & countResult
End Sub

 
B列の数字が「10以上20以下」のセルをカウントして、メッセージボックスに表示します。


 
 

COUNTIF関数(データをカウント)

以下のマクロを実行すると、該当データの件数をカウントします。


Sub 表のデータ件数を数える()
    Dim lastRow As Long
    Dim i As Long
    Dim prefecture As String
    Dim population As Long
        
    'E列最終行
    lastRow = Cells(Rows.Count, "E").End(xlUp).Row

    '2~最終行までループ
    For i = 2 To lastRow

        'E列の値を変数代入
        prefecture = Cells(i, 5).Value
        
        'データ数をカウント
        population = Application.WorksheetFunction.CountIf(Range("B:B"), prefecture)

        'F列へ転記
        Cells(i, 6).Value = population
    Next i
End Sub
 

マクロ実行前


 

マクロ実行後

B列の件数をF列に出力します。


 
 

COUNTIF関数(別シートのデータをカウント)

以下のマクロを実行すると、該当データの件数をカウントします。


Sub 表のデータ件数を数える()
    Dim lastRow As Long
    Dim i As Long
    Dim prefecture As String
    Dim population As Long
    Dim ShtA As Worksheet
    Dim ShtB As Worksheet
    
    'シートを変数代入
    Set ShtA = Sheets("A")
    Set ShtB = Sheets("B")

    'B列最終行
    lastRow = ShtB.Cells(Rows.count, "B").End(xlUp).Row

    '1~最終行までループ
    For i = 1 To lastRow

        'E列の値を変数代入
        prefecture = ShtB.Cells(i, 2).Value

        'データ数をカウント
        population = Application.WorksheetFunction.CountIf(ShtA.Range("A:A"), prefecture)

        'F列へ転記
        ShtB.Cells(i, 3).Value = population
    Next i
End Sub
 

マクロ実行前


 

マクロ実行後

Aシートのデータ数をカウントして、Bシートに出力します。


 
 

COUNTIF関数(ワイルドカード使用)

以下のマクロを実行すると、該当データの件数をカウントします。


Sub ワイルドカード集計()
    Dim count As Long
    
    count = Application.WorksheetFunction.CountIf(Range("A1:A7"), "a?p")
    
    MsgBox "A列に含まれる'a'で始まり'p'で終わる3文字のセルの数: " & count
    
End Sub
 

?は任意の一文字を表すワイルドカードです。
“a?p” は “a” で始まり、”p” で終わる3文字の単語に一致します。


 
 

この記事がお役に立ちますと幸いです。
 

【エクセルマクロ】SUBTOTAL関数を入力:具体的使用例
...

 

「ExcelVBA自動化のすべて ~35の事例で課題解決力を身につける~」
業務改善コンサルタントが教える ビジネスの現場で役立つExcelVBAの知識を解説
基本的な解決法と、応用例も紹介しています!