Excelを使っていると、「セルの中に特定の文字が何回出てくるか数えたい」「その文字を条件にして処理を分けたい」と悩む場面は意外と多いものです。例えば「文章中に『@』がいくつあるかを数えたい」「セルに『NG』が含まれる行だけ処理したい」などです。しかし、ネット検索で出てくる情報は単なる文字列判定止まりで、実際にカウントする方法まで詳しく解説している記事はほとんどありません。この記事では、Excel VBAを使って特定の文字をカウントする実践的な方法を、初心者でも理解できるように体系的にまとめました。
なぜ「特定の文字カウント」が必要なのか?
実務では「文字を含むかどうか」の判定だけでは不十分なケースがあります。たとえば、メールアドレスの「@」が1つしか含まれていないか確認したり、特定の単語が何回出てきたかで処理を分岐させたりすることがあります。
こうしたシーンでは「単なる判定」ではなく「回数を数える」ことが重要になるのです。
基本InStr関数で文字位置を探す
InStrの仕組み
InStr関数は「文字がどこに現れるか」を返す関数です。見つからなければ0を返し、見つかればその位置(1文字目なら1)を返します。これを応用することで、文字が何回登場するかをループ処理で数えられるようになります。
InStrを使ったカウント方法
以下の流れで「特定の文字」を数えます。
- 変数に文字列を代入する。
- InStr関数を使って検索開始位置から対象文字を探す。
- 見つかったらカウントを1増やし、次の位置から再度検索する。
- 見つからなくなるまで繰り返す。
この方法なら「A」という文字が10回出てくる場合でも、すべて正しくカウントできます。
便利なLike演算子でパターン判定
Like演算子の特徴
Like演算子は「部分一致」や「パターンマッチング」に強い演算子です。たとえば「*みかん*」と書けば「みかんを含むか」を判定できます。特定文字カウントには直接使いませんが、条件分岐を柔軟にしたい場合に役立ちます。
実務での活用例
例えば「(みかん)」のように括弧で囲まれた文字列を探したい場合、InStrでは「(」「みかん」「)」を順番に見つける必要がありますが、Likeなら「*(みかん)*」で一発判定可能です。
つまり精密に回数を数えるならInStr、柔軟にパターンを見分けるならLikeと使い分けるのが最適です。
特定の文字を数える実践コード
実際に「文字の出現回数」を数えるVBAコードを見てみましょう。以下は「セルA1に含まれる『a』の数を数える」例です。
vba
Function CountChar(target As String, str As String) As Long
Dim pos As Long
Dim cnt As Long
pos = 1
Do
pos = InStr(pos, target, str)
If pos > 0 Then
cnt = cnt + 1
pos = pos + 1
Else
Exit Do
End If
Loop
CountChar = cnt
End Function
この関数を使えば、シート上で
\=CountChar(A1,”a”)
と入力するだけで「aの出現回数」が表示されます。
さらに便利な応用テクニック
大文字・小文字を区別しない検索
InStrの第4引数にvbTextCompareを指定すると、「A」と「a」を同じとみなしてカウントできます。入力のゆれが多い実務データに便利です。
複数文字列のカウント
「NG」という2文字の文字列を数えることも可能です。同じロジックで「文字単位」ではなく「文字列単位」で検索するだけです。
行全体・シート全体でのカウント
ループ処理を組み合わせれば、「シート全体で特定の文字が何回登場するか」を一括で数えることもできます。大規模データのチェック作業に活用できます。
excel 特定 の 文字 カウント VBAに関する疑問解決
質問1COUNTIF関数ではだめなの?
COUNTIFは「文字を含むセルの数」を数えるだけで、「セル内での出現回数」を数えることはできません。そのため正確な出現回数を求めたい場合はVBAが必要です。
質問2正規表現を使う方法は?
正規表現を使えば「数字だけ」「アルファベットだけ」など柔軟な条件でカウントできます。ただし設定が少し難しいため、まずはInStrをマスターするのがおすすめです。
質問3処理速度は大丈夫?
数百行程度なら問題ありません。もし数万件以上のデータを扱う場合は、Variant配列に読み込んで処理すると圧倒的に高速になります。
今すぐパソコンやスマホの悩みを解決したい!どうしたらいい?
いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」
あなたはこんな経験はありませんか?
✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦
平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。
LINEでメッセージを送れば即時解決!
すでに多くの方が私の公式LINEからお悩みを解決しています。
最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。
誰でも無料で使えますので、安心して使えます。
問題は先のばしにするほど深刻化します。
小さなエラーがデータ消失や重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。
あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。
ぜひ、あなたの悩みを私に解決させてください。
まとめ
Excel VBAで特定の文字をカウントする方法は、単なる文字列判定以上に業務の幅を広げてくれる強力なテクニックです。基本はInStr関数をループで使うことで正確にカウントでき、柔軟な条件判定にはLike演算子が役立ちます。さらに応用として大文字小文字の無視、複数文字列の検出、シート全体への展開なども可能です。
この記事を参考に、自分の業務に合わせたカスタマイズを試してみてください。きっとExcel作業の効率が驚くほど改善するはずです。
コメント