「Excelで特定の文字を数えたいけど、関数だと限界がある」「VBAを使えば早そうだけど難しそう」と感じたことはありませんか?実はたった数行のVBAコードで、どんな文字や記号でも一瞬でカウントできる方法があります。しかも、応用すれば数万行のデータ処理も一気に片付けられるのです。本記事では、初心者でも迷わず理解できるように、仕組みの解説から実践的なコード例、さらに高速化の裏技まで徹底的に紹介します。
VBAで特定の文字を数える仕組み
文字を数えると聞くと、Excel関数のLENやSUBSTITUTEを思い浮かべる人が多いでしょう。しかし関数だと処理が遅くなったり、複雑なパターンには対応できないこともあります。そこで活躍するのがVBAのSplit関数と配列です。
Split関数で文字を分解する
Split関数を使うと、指定した区切り文字で文字列を分割し、配列として返してくれます。例えば「ちいさなはながさいている」を「い」で区切ると、配列には「ち」「さなはながさ」「ている」という要素が格納されます。このとき配列の要素数-1が「い」の出現回数になるのです。
UBound関数で出現回数を取得
UBoundは配列の最後のインデックスを返します。先ほどの例なら「い」が3回出てくるため、配列の最後はインデックス「3」。つまりUBoundの値=出現回数というわけです。
初心者でも使える実践コード例
実際にセルA1の文字列から特定の文字を数えるコードを見てみましょう。
- VBE(Visual Basic Editor)を開いて標準モジュールを追加します。
- 以下のコードを貼り付けます。
- 実行して結果を確認します。
Function CountChar(target As String, char As String) As Long
Dim arr As Variant
arr = Split(target, char)
CountChar = UBound(arr)
End Function
この関数をセルに「=CountChar(A1,”い”)」のように入力すると、A1に含まれる「い」の数を瞬時に数えられます。しかも、カタカナや記号、改行コードなどどんな文字でも対応可能です。
大量データに使える高速化テクニック
数千行・数万行のデータを処理する場合、1セルずつ操作すると恐ろしく遅くなります。そこで重要なのがVariant型配列を使った一括処理です。
セル範囲を一度に配列に読み込む
以下のように書くと、シート上の範囲をまるごと配列として扱えます。
Dim data As Variant
data = Range("A1:A10000").Value
これで処理はメモリ上で完結し、Excelシートとのやり取りが最小限になるため、処理速度が10倍以上高速化されることも珍しくありません。
書き込みも配列を使えば爆速
計算結果をシートに戻す際も、1セルずつ書くのではなく配列をまとめて転送することで劇的に高速化できます。
Range("B1:B10000").Value = resultArray
私の環境では、1万件のFizzBuzz問題を処理する際、セルごとに処理したら32秒かかったのに対し、配列経由では1秒未満で終わりました。
excel 特定 の 文字 カウント VBAに関する疑問解決
複数文字や単語でも数えられるの?
はい、可能です。Split関数は1文字だけでなく、文字列全体を区切り文字として認識します。そのため「Excel」で区切れば「Excel」の出現回数を数えられます。
大文字小文字を区別しない方法は?
対象文字列をLCaseやUCaseで変換してから処理すれば、大文字小文字を統一できます。例えば「A」も「a」も同じものとして数えられます。
処理結果を他のセルに自動出力したい
UDF(ユーザー定義関数)ではなくマクロ手続きにすれば、A列から数えた結果をB列に順次出力することも可能です。この場合は配列を活用して一括書き込みするのがベストです。
今すぐパソコンやスマホの悩みを解決したい!どうしたらいい?
いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」
あなたはこんな経験はありませんか?
✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦
平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。
LINEでメッセージを送れば即時解決!
すでに多くの方が私の公式LINEからお悩みを解決しています。
最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。
誰でも無料で使えますので、安心して使えます。
問題は先のばしにするほど深刻化します。
小さなエラーがデータ消失や重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。
あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。
ぜひ、あなたの悩みを私に解決させてください。
まとめ
Excelで特定の文字をカウントするVBAは、初心者でも短いコードで実装できます。Split関数とUBound関数を組み合わせれば、柔軟かつ高速に文字数を数えることが可能です。さらに配列を活用すれば、大量データの処理も圧倒的に効率化できます。Excel関数だけでは実現が難しい処理も、VBAならスムーズに解決できるのです。今日紹介したテクニックを活用すれば、面倒な手作業に悩まされることなく、業務の時短と正確性向上を同時に実現できるでしょう。
コメント