エクセルマクロで、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文字の単語に一致します。
この記事がお役に立ちますと幸いです。
「ExcelVBA自動化のすべて ~35の事例で課題解決力を身につける~」
業務改善コンサルタントが教える ビジネスの現場で役立つExcelVBAの知識を解説
基本的な解決法と、応用例も紹介しています!