エクセルを使っていて、特定の文字がデータの中にどれくらい出現するかカウントしたいな、と思うことはありませんか?エクセルにはセル内の特定の文字を直接数える専用の関数が用意されていないため、どうやって処理すればいいか迷ってしまうかもですね。実務では、単一のセルだけでなく複数セルのデータをまとめて集計したり、英字の大文字と小文字を区別して正確に数えたりしたい場面によく遭遇するかと思います。また、表記の揺れを考慮して全角半角を区別しないで計算したい場合や、セル内の改行をカウントする関数を組み合わせてデータの行数を把握したいという声もよく耳にします。さらに、一文字だけでなく複数文字を指定してカウントしたり、条件に合うセルを探すCOUNTIF関数とどう使い分ければいいか悩むこともあるかもしれません。この記事では、そんな日々のデータ処理に関するお悩みを解決するためのアイデアを、私自身の経験も交えながらわかりやすく紹介していきますね。

- 文字数の差分を利用した基本的なカウントの仕組み
- 複数セルを一括で処理する関数の組み合わせ方
- 全角や半角などの表記揺れを整えてから計算するコツ
- 条件に合うセルの数と文字の出現回数の明確な違い
エクセルのセル内で特定の文字をカウント
まずは、エクセルで特定の文字が何回出現したかを算出するための基本的な考え方について整理していきましょう。専用の関数がないからといって諦める必要は全くありません。既存の関数をパズルのように組み合わせることで、とても柔軟なデータ処理ができるようになりますよ。
複数セルはSUMPRODUCT関数で計算
特定の列や表全体など、複数セルにまたがって特定の文字が何個含まれているかをまとめてカウントしたい場面は多いですよね。作業用の列をわざわざ作って1行ずつ計算し、最後に合計するというのも一つの手ですが、表の構造が少しごちゃごちゃしてしまうかもですね。
そんなときに私がよく使うのが、SUMPRODUCT関数を活用したアプローチです。この関数を使うと、複数のセル範囲に対する計算をメモリ上で一気に処理してくれるので、ひとつの数式だけでスッキリと答えを出すことができます。
ワンポイント:
SUMPRODUCT関数と、文字数を数えるLEN関数、そして文字を置き換えるSUBSTITUTE関数を組み合わせます。
「元の全体の文字数」から「特定の文字を消し去った後の全体の文字数」を引き算することで、消えた文字の分量がわかり、そこから出現回数を逆算するという賢い仕組みです。
数式のイメージとしては、=SUMPRODUCT(LEN(範囲) - LEN(SUBSTITUTE(範囲, "対象", ""))) のようになります。少し数式が長く感じるかもしれませんが、慣れてしまえばとても頼りになるテクニックかなと思います。
大文字と小文字を区別する正規化
英語のデータを扱っていると、入力する人によって「Apple」だったり「apple」だったりと、大文字と小文字が混ざってしまうことがよくありますよね。実は、文字を置き換えるSUBSTITUTE関数は、デフォルトで大文字と小文字を厳密に区別するという少し頑固な性質を持っています。そのため、普通に検索してしまうと小文字だけしかカウントされず、大文字が漏れてしまうといったミスが起きやすいんです。
大文字と小文字の違いを気にせず、まとめてカウントしたい場合は、計算を行う前に文字の形を揃えてあげる「正規化」というステップを挟むのがおすすめです。具体的には、UPPER関数を使ってセルの中身も検索したい文字も一時的にすべて大文字に変換してから処理を行います。
補足知識:
逆に、小文字に統一したい場合はLOWER関数を使います。このひと手間を加えるだけで、データ入力の揺れによるカウント漏れをしっかり防ぐことができますよ。
全角半角を区別しないための対策
日本語のデータを扱う上で特にやっかいなのが、全角文字と半角文字の混在ですね。たとえば、「エクセル」と「エクセル」や、「A」と「A」などです。これも大文字小文字の時と同じように、そのままでは別の文字として扱われてしまいます。
全角半角を区別しないでしっかりカウントしたい場合、私の場合はASC関数(全角を半角に変換)やJIS関数(半角を全角に変換)を数式の中に組み込んで、文字の幅をどちらか一方に統一してから計算するようにしています。
また、文字の意味的な数ではなく、「データ量(バイト数)」として計算したいといったちょっと特殊なケースでは、LEN関数の代わりにLENB関数を使うと便利です。LENB関数なら全角を2バイト、半角を1バイトとして計算してくれるので、システムの仕様に合わせた文字数チェックなどに役立ちますよ。
セル内の改行をカウントする関数
ひとつのセルの中で「Alt + Enter」を押して、箇条書きのように複数の項目を入力しているデータをもらうこと、ありませんか?こういったセルの中にいくつの項目が入っているかを数えたい場合、セル内の改行をカウントする関数という視点でアプローチします。
エクセルの内部では、改行は目に見えない「CHAR(10)」という特殊な文字として扱われています。ですので、先ほどから登場しているSUBSTITUTE関数を使って、このCHAR(10)を空白に置き換えて文字数の差分を見ることで、改行が何回行われたかを簡単に知ることができるんです。
注意してほしいこと:
改行の数が分かったとしても、実際の「項目数」は改行の数に「+1」をした数になります(2行なら改行は1回)。また、ひとつのセルに複数のデータを詰め込むのは、後からデータ分析をする際にとても扱いづらくなる原因になります。可能であれば、最初からセルを分けて入力することをおすすめします。
複数文字を指定してカウントする
検索したい文字が「A」のような1文字ではなく、「エクセル」といった複数文字の単語である場合、計算の最後に少しだけ注意が必要です。
文字を消去した前後の文字数の差分を出したとき、検索した単語が3文字だった場合、1回出現するごとに文字数は「3」減ることになりますよね。そのため、差分として出てきた数字をそのまま出現回数としてしまうと、結果が本来の3倍になってしまいます。
このズレを防ぐために、算出した文字数の差分を、検索対象の文字数で割り算するプロセスを最後に追加します。数式の末尾に / LEN("検索対象") と付け加えるのを忘れないようにしてくださいね。これで、どんな長さの単語でも正確な回数を算出できます。
応用:エクセルで特定の文字をセル内でカウント

ここからは少し視点を変えて、データのカウントに関連する応用的なテクニックや、間違いやすいポイントについて整理していきます。目的に応じて道具を使い分けることが、エクセル作業を快適にするコツですね。
COUNTIF関数との機能的な違い
「文字を数える」といったときに、よく混同されがちなのがCOUNTIF関数です。エクセルで特定の文字をセル内でカウントしたいと思ったとき、まずはこの関数が思い浮かぶ方も多いのではないでしょうか。
ですが、これまで解説してきた「文字の出現回数」を数える手法と、COUNTIF関数が行う処理には明確な違いがあります。整理してみましょう。
| 比較ポイント | COUNTIF関数 | LEN + SUBSTITUTE関数 |
|---|---|---|
| 数えているもの | 条件に合うセルの個数 | セル内の文字の出現回数 |
| 重複の扱い | 1セルに探す文字が何度出ても「1」 | 出た回数だけ正確にカウントする |
| 得意なこと | ワイルドカードを使った曖昧検索 | ひとつのセル内の緻密な文字数分析 |
もし、「対象の単語が含まれている顧客が何人いるか」を知りたいだけなら、ワイルドカード(*)を使ったCOUNTIF関数の方が処理も軽く、数式もシンプルなのでおすすめです。自分が本当に知りたいのは「セルの数」なのか「文字の数」なのかを、最初にしっかり見極めることが大切ですね。
不要な空白文字を除外してカウント
文字数をカウントする際に意外な落とし穴となるのが、目に見えない「空白(スペース)」の存在です。誰かが入力する際に誤って末尾にスペースを入れてしまっていたりすると、LEN関数はそれも立派な1文字としてカウントしてしまいます。
純粋なテキストの文字数だけを把握したい場合は、カウント処理を行う前に、SUBSTITUTE関数を使って全角スペースと半角スペースの両方を削除しておくのが安全です。また、単語の間にある意図的なスペースは1つだけ残して、先頭や末尾の無駄なスペースだけを綺麗に取り除きたい場合には、TRIM関数を使うととても自然な仕上がりになりますよ。
複数条件を組み合わせてカウント
実務では、「A列に特定の文字が含まれていて、かつ、B列の数値が一定以上」といったように、複数の条件を組み合わせてカウントしたいケースが圧倒的に多いですよね。
このような「かつ(AND条件)」の集計を行いたい場合は、COUNTIF関数の仲間であるCOUNTIFS関数の出番です。複数の条件範囲と検索条件を順番に指定していくだけで、複雑なクロス集計もあっという間にこなしてくれます。
数値の条件指定のコツ:
「100以上」などの条件を指定する際は、ダブルクォーテーションで囲んで ">=100" のように入力します。特定の文字を「含まない」ものを探したいときは "<>対象文字" のように否定の記号を使うと、ノイズを取り除くのに役立ちます。
重複を除外した一意の値のカウント
少し高度なデータ処理になりますが、リストの中に同じ名前が何度も登場しているとき、「重複を除外して、結局何種類あるのか?」をカウントしたい場合もありますよね。
最新のMicrosoft 365を使っている環境であれば、UNIQUE関数を使って一瞬で重複を取り除くことができるのですが、古いバージョンのエクセルでも使える伝統的なテクニックもあります。それは、SUMPRODUCT関数とCOUNTIF関数を組み合わせて、出現回数の逆数を合計するという少し数学的なアプローチです。
たとえば「リンゴ」が3回登場した場合、それぞれを「3分の1」として計算し、それを3回足すことで「1種類」と見なす、というとてもスマートな論理です。知っておくと、環境を問わずどこでも使えるので頼もしい知識かなと思います。
まとめ:エクセルのセル内で特定の文字をカウント
今回は、エクセルのセル内で特定の文字をカウントするさまざまなアプローチについて解説してきました。専用の関数がなくても、LEN関数やSUBSTITUTE関数、そしてSUMPRODUCT関数を論理的に組み合わせることで、どんな複雑な文字カウントでも実現できることがお分かりいただけたかと思います。
大切なのは、大文字小文字の違いや全角半角の揺れ、見えないスペースや改行など、実際のデータには常に「ノイズ」が潜んでいるという前提を持つことです。計算の前にデータを整える(正規化する)ひと手間を加えることで、集計結果の正確性は格段に向上します。
安全に運用するために:
複雑な数式を組む際は、空白セルがあった場合などにエラー(#DIV/0! など)が表示されないよう、数式の外側をIFERROR関数で囲んでおくことをおすすめします。これだけで、表全体のエラー連鎖を防ぐことができます。
※システムやエクセルのバージョンに関する正確な仕様は、必ずMicrosoftの公式サイトをご確認ください。また、複雑な財務データなどを処理する最終的な判断は専門家にご相談されることを推奨します。
「セルの数を数えたい」のか「文字の出現回数を数えたい」のか、まずは目的をクリアにして、状況に一番合った手法を選んでみてくださいね。この記事のアイデアが、皆さんの日々のデータ作業を少しでも快適にするヒントになれば嬉しいです!
