文字の個数を1文字ずつ調べて数える
ForとMidを使って先頭から1文字ずつ比較し、一致した回数を加算します。
実行前に確認
- Midの位置は1から数えます。Splitの配列の添字0とは異なります。
- この例は通常の1文字を数える練習です。絵文字や結合文字の見た目の文字数を数える用途には、そのまま使わないでください。
- Excel実機での動作は未確認です。コピーした練習用ブックで試してください。
1サンプルコード
Option Explicit
Sub Example7051()
Dim text As String
Dim target As String
Dim i As Long
Dim count As Long
text = "banana"
target = "a"
If Len(target) <> 1 Then
MsgBox "数える文字は1文字にしてください。", vbExclamation
Exit Sub
End If
For i = 1 To Len(text)
If StrComp(Mid$(text, i, 1), target, vbBinaryCompare) = 0 Then
count = count + 1
End If
Next i
MsgBox target & " の個数: " & count
End Sub図で見る1文字ずつ比べてaを数える
イメージ図bananaの6文字を順に調べ、一致したときだけ加算します。
6文字と対象a
text = "banana"、target = "a"、countは初期値0
位置1~6を順に比較
Mid$(text, i, 1)とaをStrCompで比較し、位置2・4・6で加算
countは3
3回一致した結果を「a の個数: 3」と表示
文字位置は1から始まります。絵文字などの見た目の文字数を数える例ではありません。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
Windows版デスクトップExcelの練習用ブックを.xlsm形式で保存します。Alt+F11でVBEを開き、[挿入]→[標準モジュール]で作った空のモジュールに、Option Explicitから末尾まで、この例だけを貼り付けます。
- 2
セル入力は不要です。iは調べる位置、countは見つかった個数を表します。
- 3
Example7051のSub内にカーソルを置き、F5キーで実行します。
- 4
「a の個数: 3」と表示されます。空の文字列に変えるとループは実行されず0になります。