Excelで文章や文字列を扱っていると、「特定の単語が何回含まれているか」を調べたい場面が出てきます。
たとえば「Excel」という単語が含まれる回数をカウントして、その頻度に応じてデータの重み付けや分類を行いたいというケースです。
本記事では、VBAを使ってセル内の文字列から特定の単語の出現回数をカウントし、隣のセルに出力する方法をご紹介いたします。
目次
想定する活用場面
- キーワードの頻出度に応じたマーケティングデータの整形。
- フィードバック文やコメント欄の分析。
- レポートや自由記述欄からのキーワード抽出。
VBAコードの例
以下のコードでは、セル範囲 B2:B6
にある各セルの中から、文字列「森」が何回含まれているかを数え、その結果を右隣の列(C列)に出力します。
Sub CountKeywordInCells()
Dim targetRange As Range
Dim cell As Range
Dim keyword As String
Dim countResult As Long
keyword = "森"
Set targetRange = Range("B2:B6")
For Each cell In targetRange
countResult = UBound(Split(cell.Value, keyword))
cell.Offset(0, 1).Value = countResult
Next cell
End Sub
コードのポイント解説
要素 | 説明 |
---|---|
Split(cell.Value, keyword) | セルの文字列をキーワードで分割します。 |
UBound(...) | 分割された配列の上限インデックスを取得することで、「出現回数」を得ます。 |
Offset(0, 1) | 隣の列(右側)に出力する指定です。 |
仕組みの補足
たとえば文字列 "森と森の森"
がある場合、Split(..., "森")
で ["", "と", "の", ""]
という配列になります。
この配列の要素数は4なので、区切りとなった「森」は3回出現したと判断できます(配列数 – 1 = 出現回数)。
応用例
- 複数のキーワードに対応させたい場合は、ループをネストさせることで可能です。
- 結果の合計を別セルに出力することで、範囲全体の出現合計も簡単に取得できます。
LCase
関数で文字列を小文字化しておけば、大文字・小文字の区別なく検索可能になります。
まとめ
VBAのSplit
関数とUBound
を活用すれば、セル内に含まれる特定の単語の出現回数を簡単にカウントできます。
この処理は手作業では難しい文字列分析を効率化できるため、Excelによるテキスト分析やデータ分類業務において非常に役立ちます。
特に「森」や「Excel」など、業務上よく使うキーワードの頻度を可視化したい場面では、ぜひ本記事の手法をご活用ください。