文字の個数をLenとReplaceで数える
指定した1文字をすべて除いた前後の長さを比較して、出現回数を求めます。
実行前に確認
- 長さの差をそのまま個数にできるのは検索対象が1文字のときです。
- vbBinaryCompareを指定しているため、小文字aと大文字Aは区別されます。
- Excel実機での動作は未確認です。コピーした練習用ブックで試してください。
1サンプルコード
Option Explicit
Sub Example7050()
Dim text As String
Dim target As String
Dim count As Long
text = "banana"
target = "a"
If Len(target) <> 1 Then
MsgBox "数える文字は1文字にしてください。", vbExclamation
Exit Sub
End If
count = Len(text) - Len(Replace(text, target, "", 1, -1, vbBinaryCompare))
MsgBox target & " の個数: " & count
End Sub図で見るaを除いた長さの差で3個と数える
イメージ図bananaから小文字aを除き、前後の文字数を比較します。
bananaとaを用意
text = "banana"、target = "a"。targetが1文字か確認
aを除いて長さを比較
Replaceで「bnn」を作り、Lenの差6 − 3を計算
3個を表示
countは3になり「a の個数: 3」を表示
この式は対象が1文字の前提です。大文字AはvbBinaryCompareにより別文字として扱います。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
Windows版デスクトップExcelの練習用ブックを.xlsm形式で保存します。Alt+F11でVBEを開き、[挿入]→[標準モジュール]で作った空のモジュールに、Option Explicitから末尾まで、この例だけを貼り付けます。
- 2
セルは使いません。「banana」の中の小文字aを数えます。
- 3
Example7050のSub内にカーソルを置き、F5キーで実行します。
- 4
「a の個数: 3」と表示されます。Replaceは変数text自体を書き換えません。