エクセルの表計算やアンケートの集計などで、「特定の文字が複数セルの中にどれくらい含まれているかカウントしたい」と悩むことはありませんか?
日々の業務で、大量のテキストデータから必要な情報だけを正確に抽出するのは本当に大変ですよね。
特に、一つのセルの中に同じ文字が何度も出てきたり、大文字や小文字が混ざっていたりすると、手作業で数えるのは時間がかかりすぎて現実的ではありません。
この記事では、複数セル内の文字をカウントする方法について、完全一致や部分一致のやり方から、LEN関数やSUMPRODUCT関数を使った応用テクニックまで、私が普段のデータ整理で活用している手順を詳しく解説します。
最後まで読んでいただければ、面倒な文字の集計作業があっという間に終わるようになりますよ。

- COUNTIF関数を使った基本的なセルの数え方がわかる
- ワイルドカードを使って部分一致の文字をカウントする方法がわかる
- LEN関数とSUBSTITUTE関数を組み合わせてセル内の出現回数を出す計算式がわかる
- SUMPRODUCT関数で複数セルの文字数を一括で集計するコツがわかる
基礎:エクセルで特定の文字を複数セル内でカウント
まずは、エクセルで特定の文字をカウントするための最も基本的なアプローチから解説していきます。
指定した文字が含まれる「セルの数」を数える場合と、一つのセルの中にある「文字の数」を数える場合では、使うべき関数が全く異なります。
目的に応じた関数の選び方をしっかりマスターしていきましょう。
COUNTIF関数で条件指定
指定した範囲の中から、特定の文字と完全に一致するセルの数を数えたい場合に一番活躍するのがCOUNTIF(カウントイフ)関数です。
例えば、アンケート結果のリストから「東京都」と入力されているセルの数を調べたいときなどに使います。
基本的な数式の書き方は以下のようになります。
=COUNTIF(範囲, 検索条件)
例:=COUNTIF(A1:A100, "東京都")
検索条件に直接文字を入力する場合は、必ず半角のダブルクォーテーション(””)で囲むのを忘れないようにしてくださいね。
また、条件を別のセル(例えばB1セル)に入力しておき、=COUNTIF(A1:A100, B1)のようにセル参照を使うと、B1の文字を変えるだけでカウント結果がパッと切り替わるので非常に便利です。
ただし、この方法はあくまで「セル全体が検索条件と完全に一致している場合」にしか使えません。
「東京都港区」のように、前後に他の文字が含まれている場合はカウントされない点には注意が必要です。
ワイルドカードで部分一致
「りんご」という文字が含まれるセル(「青森県産りんご」や「りんごジュース」など)をすべてカウントしたい。
このような「あいまい検索(部分一致)」を行いたい場合は、ワイルドカードと呼ばれる特殊な記号を使います。
よく使うワイルドカードは、アスタリスク(*)です。これは「任意の0文字以上の文字列」を意味します。
COUNTIF関数と組み合わせて以下のように使います。
| 検索方法 | 数式の例 | マッチする文字列の例 |
|---|---|---|
| 前後に何が含まれていてもOK(部分一致) | =COUNTIF(A1:A100, "*りんご*") |
「青森県産りんご」「りんごジュース」 |
| 最後がその文字で終わる(後方一致) | =COUNTIF(A1:A100, "*県") |
「青森県」「神奈川県」 |
| 最初がその文字で始まる(前方一致) | =COUNTIF(A1:A100, "コーヒー*") |
「コーヒーメーカー」「コーヒー豆」 |
セル参照とワイルドカードを組み合わせたい場合は、少し工夫が必要です。
例えばB1セルに「りんご」と入っていて、それを部分一致で探したい場合、=COUNTIF(A1:A100, "*B1*")と書いてしまうとエラーというか、「B1という文字」を探してしまいます。
正しくは、アンパサンド(&)を使って=COUNTIF(A1:A100, "*" & B1 & "*")のように文字を結合させてくださいね。
COUNTIFSで複数条件
「特定の文字が含まれていて、かつ別の条件も満たす」というように、複数の条件(AND条件)でセルをカウントしたい場合は、COUNTIFS(カウントイフス)関数の出番です。
例えば、A列が「営業部」で、かつB列に「出張」という文字が含まれる(部分一致)セルを数えたい場合は、以下のように記述します。
=COUNTIFS(A1:A100, "営業部", B1:B100, "*出張*")
このように、条件範囲と検索条件をセットにしてどんどん追加していくことができます。最大127組まで指定できるので、かなり複雑な絞り込みも可能になります。
LEN関数で出現回数を算出
ここまでは「セルの数」を数える方法でしたが、実務でよくあるのが「1つのセルの中に特定の文字が何回出てくるかを数えたい」というケースです。
例えば、「エラー、警告、エラー」という一つのセルの中に「エラー」という文字が何回あるか(この場合は2回)を出したい場合、COUNTIF関数では対応できません。
この問題を解決するためには、文字数を数えるLEN関数と、文字を置き換えるSUBSTITUTE関数を組み合わせた少し数学的なアプローチを使います。
計算のロジックは以下の通りです。
- 元のセルの全体の文字数を数える(LEN関数)
- セル内の数えたい文字を「空白」に置き換えて消す(SUBSTITUTE関数)
- 文字を消した後のセルの文字数を数える(LEN関数)
- 元の文字数から、消した後の文字数を引く(これで消えた文字数の合計が出ます)
- その差分を「数えたい文字自体の文字数」で割る
数式にするとこのようになります(A1セルの中から「エラー」という3文字を探す場合)。
=(LEN(A1) - LEN(SUBSTITUTE(A1, "エラー", ""))) / LEN("エラー")
最初は少し複雑に見えるかもしれませんが、この数式をコピーしてセル番地と検索文字を変えるだけで、どんなセル内の出現回数でも正確に算出できるので、ぜひ試してみてください。
SUMPRODUCTで一括集計
先ほどのLEN関数とSUBSTITUTE関数の組み合わせは、1つのセルに対する計算式でした。
もし、A1からA100までの広い範囲(複数セル内)のすべての出現回数を合計したい場合、隣に作業用の列を作って計算してからSUMで合計する…というのは少し面倒ですよね。
そんな時に活躍するのがSUMPRODUCT関数です。
配列数式という少し高度な処理を、簡単な記述でやってのける強力な関数です。
複数セル範囲に対する計算式は以下のようになります。
=SUMPRODUCT(LEN(A1:A100) - LEN(SUBSTITUTE(A1:A100, "検索文字", ""))) / LEN("検索文字")
この数式一つで、複数セル内に散らばっている特定の文字の総数を一瞬で弾き出すことができます。
ログデータの解析や、長文アンケートの中の特定キーワードの出現回数を調べたいときなどに、非常に強力な味方になってくれます。
応用:エクセルで特定の文字を複数セル内でカウント

基本的なカウントができるようになったら、次は実際のデータによくある「表記ゆれ」や、より複雑なケースへの対応です。
大文字・小文字の区別や全角・半角の混在など、実務のデータクレンジングで直面する問題をクリアし、より正確に複数セル内で文字をカウントするための応用テクニックをご紹介します。
EXACT関数で大文字を区別
エクセルの標準機能であるCOUNTIF関数などは、親切な設計ゆえにアルファベットの大文字と小文字を区別しません。
つまり、「Excel」と「EXCEL」と「excel」はすべて同じものとしてカウントされてしまいます。
しかし、製品の型番やパスワードのログなど、大文字・小文字を厳密に区別して数えたい場面もありますよね。
そんな時は、文字が完全に一致しているかを判定するEXACT関数を使います。
数式例:=SUMPRODUCT(EXACT(A1:A100, "Excel") * 1)
EXACT関数が指定範囲をチェックし、完全一致ならTRUE、違えばFALSEを返します。そこに「* 1」をかけることでTRUEが「1」になり、それをSUMPRODUCTで合計するという仕組みです。
少しマニアックですが、厳密なデータ集計には欠かせない手法です。
※EXACT関数のより詳しい仕組みについては、Excelで文字列を比較する方法(EXACT)の記事でも解説していますので、参考にしてみてください。
全角半角の表記ゆれを吸収
逆に、大文字小文字や全角半角が混在しているデータを「同じもの」としてまとめてカウントしたい場合もあります。
人が手入力したデータだと、「エクセル」(半角カナ)や「エクセル」(全角カナ)、「 Excel」(全角英字)などが混ざっているのは日常茶飯事です。
このような表記ゆれを吸収するには、カウントの処理をする前に、関数を使って文字の形式を統一(正規化)してしまうのが一番確実です。
| 表記ゆれの種類 | 解決のための関数 | 数式の例(セル内文字カウントの応用) |
|---|---|---|
| 大文字・小文字の混在 | LOWER関数(すべて小文字化) | =LEN(A1) - LEN(SUBSTITUTE(LOWER(A1), "excel", "")) |
| 全角・半角カタカナや英数字の混在 | ASC関数(すべて半角化) | =LEN(A1) - LEN(SUBSTITUTE(ASC(A1), "excel", "")) |
元のデータを直接書き換えなくても、数式の中でASC関数などを挟むだけで、自動的に文字を揃えてから計算してくれるので、データ整理の手間が大幅に省けますよ。
セル内改行コードの数え方
少し特殊なケースですが、一つのセルの中で「Alt + Enter」で改行されている場合、その「改行の数」をカウントしたいというご質問をいただくことがあります。
例えば、改行の数を数えれば、そのセルに入力されているテキストが何行あるかがわかるからです。
エクセルにおいて、セル内改行は目には見えませんが「CHAR(10)」という特殊なキャラクターコードとして扱われています。
したがって、前述のLEN関数とSUBSTITUTE関数の組み合わせで、検索文字の代わりにCHAR(10)を指定すればOKです。
改行の数を数える:=LEN(A1) - LEN(SUBSTITUTE(A1, CHAR(10), ""))
セル内の行数を数える(改行の数+1):=LEN(A1) - LEN(SUBSTITUTE(A1, CHAR(10), "")) + 1
このテクニックを知っておくと、長いテキストデータの構造を分析する際にとても便利です。
最新関数のスピルで自動化
もしあなたが、Microsoft 365やExcel 2021以降の最新バージョンを使っているなら、「スピル」という動的配列の機能と新関数を使うことで、これまでの複雑な数式を劇的にシンプルにすることができます。
文字の出現回数を数えるのに便利なのが、指定した文字でテキストを分割するTEXTSPLIT関数です。
例えば、A1セルにある文字を「検索文字」で分割し、その分割された数(列の数)から1を引くことで、出現回数を出すことができます。
=COLUMNS(TEXTSPLIT(A1, "検索文字")) - 1
この方法のすごいところは、検索文字の部分に{"りんご", "みかん"}のように複数指定できる点です。
従来のように長々とした数式を作らなくても、複数の条件を一度に処理できるので、最新環境をお使いの方はぜひこちらの新しいアプローチも試してみてくださいね。
※TEXTSPLIT関数などの最新関数は、古いバージョンのExcelでは使用できません。エラーになる場合は、ご自身のExcelのバージョンを確認してくださいね。
エクセルで特定の文字を複数セル内でカウント総括
いかがでしたでしょうか。今回は、エクセルで特定の文字をカウントする方法について、基礎から応用まで幅広く解説しました。
COUNTIF関数による条件抽出から、LEN関数を使ったセル内の文字出現回数の算出、そして表記ゆれ対策まで、データの性質に合わせてアプローチを変えることが重要だということがお分かりいただけたかと思います。
日々のデータ集計作業において、今回ご紹介した「エクセルで特定の文字を複数セル内でカウントする」テクニックを一つでも取り入れていただければ、作業効率は劇的にアップするはずです。
まずは簡単なCOUNTIFやワイルドカードから試してみて、慣れてきたらSUMPRODUCTや最新関数などにもチャレンジしてみてください。
これらの手法が、皆さんのエクセル業務の負担軽減に少しでも役立てば嬉しいです。
※記事内でご紹介した計算式などはあくまで一般的な目安です。実際の業務データに適用する際は、テストデータで正しくカウントできるか確認してから使用することをおすすめします。
