Vba: 文字列内の文字の出現を数える方法
VBA を使用して文字列内の文字の出現数をカウントするには、次の基本構文を使用できます。
Sub CountOccurrences()
Dim i As Integer
'Specify character to look for
my_char = "/"
'Count occurrences in each string in B2:B12 and display results in C2:C12
For i = 2 To 12
Count = (Len(Range(" B " & i)) - Len(Replace(Range(" B " & i), my_char, ""))) / Len(my_char)
Range(" C " & i) = Count
Next i
End Sub
この特定の例では、範囲B2:B12内の各セル内のスラッシュ ( / ) の出現数をカウントし、結果を範囲C2:C12に表示します。
次の例は、この構文を実際に使用する方法を示しています。
例: VBA を使用して文字列内の文字の出現回数をカウントする
Excel に、さまざまなバスケットボール選手の名前と、試合でプレーできるポジションを示す次のデータ セットがあるとします。
Position 列の各文字列のスラッシュ ( / ) の数を数えたいとします。
これを行うには、次のマクロを作成できます。
Sub CountOccurrences()
Dim i As Integer
'Specify character to look for
my_char = "/"
'Count occurrences in each string in B2:B12 and display results in C2:C12
For i = 2 To 12
Count = (Len(Range(" B " & i)) - Len(Replace(Range(" B " & i), my_char, ""))) / Len(my_char)
Range(" C " & i) = Count
Next i
End Sub
このマクロを実行すると、次の出力が表示されます。
列 C の値は、列 B の一致する文字列内のスラッシュの出現数を表示します。
例えば:
- Guard /Forward 文字列には1 つのスラッシュが含まれます。
- ガード文字列にはスラッシュが0 個含まれています。
- ガード文字列にはスラッシュが0 個含まれています。
- Forward/Center 文字列には1 つのスラッシュが含まれます。
等々。
別の文字の出現をカウントするには、マクロ内のmy_char変数の文字を変更するだけです。
追加リソース
次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。
VBA: 文字列に別の文字列が含まれているかどうかを確認する方法
VBA: 範囲内の行数をカウントする方法
VBA: COUNTIF 関数と COUNTIFS 関数の書き方