← コード一覧へ戻る
実務文字・日付

文字の個数を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文字を順に調べ、一致したときだけ加算します。

  1. 6文字と対象a

    text = "banana"、target = "a"、countは初期値0

  2. 位置1~6を順に比較

    Mid$(text, i, 1)とaをStrCompで比較し、位置2・4・6で加算

  3. countは3

    3回一致した結果を「a の個数: 3」と表示

文字位置は1から始まります。絵文字などの見た目の文字数を数える例ではありません。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    Windows版デスクトップExcelの練習用ブックを.xlsm形式で保存します。Alt+F11でVBEを開き、[挿入]→[標準モジュール]で作った空のモジュールに、Option Explicitから末尾まで、この例だけを貼り付けます。

  2. 2

    セル入力は不要です。iは調べる位置、countは見つかった個数を表します。

  3. 3

    Example7051のSub内にカーソルを置き、F5キーで実行します。

  4. 4

    「a の個数: 3」と表示されます。空の文字列に変えるとループは実行されず0になります。

使っている機能の公式ドキュメント(Microsoft Learn)