エクセルの表の中から、ハイフンやスラッシュ、記号だけをピンポイントで数えたい場面は多いですが、手作業で数えるのは現実的ではありません。
関数を使えば、特定の記号だけを自動でカウントしたり、記号を含むセルの数だけを抽出したりできます。
本記事では、代表的なCOUNTIF関数やLEN関数を中心に、実務でそのまま使える「記号カウントの型」を網羅的に解説します。
初心者でもコピペで使える具体例とあわせて、エラーを避けるコツや応用テクニックまで丁寧に紹介します。
目次
エクセルで記号の数を数える関数の基本と考え方
エクセルで記号の数を数えるといっても、「セルの中に含まれる記号の個数」を知りたいのか、「特定の記号が入っているセルの数」を知りたいのかで使う関数が変わります。
前者は文字列の長さを扱うLEN関数と置換用のSUBSTITUTE関数の組み合わせが中心になり、後者は条件付き集計のCOUNTIF関数・COUNTIFS関数を使うのが基本です。
まずはそれぞれの違いと役割を理解することで、狙いどおりの結果を得られるようになります。
また、エクセルでは「記号」も文字の一種として扱われるため、関数の仕様上、ワイルドカードとして解釈されてしまう記号や、全角と半角で別の文字として扱われる記号もあります。
こうした仕様を知らずに関数式を組むと、正しくカウントできない、値が多すぎる・少なすぎるといったトラブルが起こりがちです。
この章では、後の具体的なテクニックを理解しやすくするために、記号カウントに関わる関数と、エクセルの文字列の扱いの基礎を整理します。
セル単位で数えるか、文字単位で数えるかの違い
最初に整理したいのが、「セル単位で数える」のか「文字単位で数える」のかという視点です。
例えば、「-」を含むセルが何個あるかを知りたいなら、COUNTIF関数で条件に「*-*」のように指定します。これはセルごとに条件を判定し、条件を満たすセルの数を返します。
一方で、A1セルの中に「-」が何個含まれるかを知りたい場合は、LEN関数で文字数の差分を取る必要があります。
実務では、どちらのニーズも頻繁に登場します。電話番号リストでハイフンを含むセル数をチェックしたい場合と、1つの文章セルに含まれる記号の個数を分析したい場合では、アプローチがまったく異なるからです。
目的をはっきりさせて、「セル数」「文字数」のどちらを数えたいのかを先に決めることで、関数選択のミスや無駄な試行錯誤を防げます。
文字列と記号を扱う主な関数の役割整理
記号カウントで中核になるのは、次のような関数です。
COUNTIF・COUNTIFSは条件付き集計、LENは文字数取得、SUBSTITUTEは文字置換、SUMPRODUCTは複雑な条件を数式だけで処理するために使います。
それぞれの関数は単体ではなく、組み合わせることで真価を発揮します。
例えば、LENとSUBSTITUTEを組み合わせると、特定の文字を取り除いた前後の文字数差から、その文字が出現した回数を求められます。
また、COUNTIFとワイルドカードを組み合わせることで、「記号を含んでいるセル」を簡単に抽出できます。
どの関数がどの役割を持っているかを把握しておくと、目的に応じた「型」を組み立てるのがスムーズになります。
全角・半角や似た記号を区別する必要性
日本語環境のエクセルでは、全角と半角の記号が混在しがちです。
例えば、「-」(全角ハイフン)と「-」(半角ハイフン)は見た目は似ていますが、エクセルでは別の文字として扱われます。
このため、COUNTIFやSUBSTITUTEで記号を指定する際に、どちらの文字を使っているかで結果が大きく変わってしまいます。
実務でよくあるのは、ユーザー入力データに全角と半角が混ざっているケースです。
こうした場合、先にCLEAN関数やTRIM関数、あるいは関数ではなく置換機能やパワークエリで表記を統一してからカウントした方が、予期せぬ抜け漏れを防ぎやすくなります。
記号カウントの前処理として、文字の種類や表記揺れを意識することが精度向上のポイントです。
COUNTIF関数で特定の記号を含むセルの数を数える

特定の記号を含んでいるセルの数を数えたい場合、多くの場面で最もシンプルに使えるのがCOUNTIF関数です。
COUNTIFは「範囲」と「条件」を指定するだけで、条件に合致したセルの数を返してくれます。
記号を条件に指定するときは、ワイルドカードと組み合わせて、「記号を含むセル」を柔軟に抽出できます。
この章では、COUNTIFを使ってハイフンやスラッシュなど特定の記号が含まれるセル数を数える基本パターンや、複数列を集計する方法、ワイルドカードとして扱われる特殊記号を正しく検索する方法など、現場で多用されるテクニックを詳しく解説します。
COUNTIF関数の基本構文と記号検索の考え方
COUNTIF関数の基本構文は、COUNTIF(範囲, 条件) です。
記号を含むセルの数を知りたい場合、条件にはワイルドカードを組み合わせた文字列を指定します。例えば、A列でハイフンを含むセルの数を数える場合は、COUNTIF(A:A, “*-*”) のように指定します。
アスタリスクは任意の文字列を表し、「前後に何があってもよいが、どこかにハイフンがあるセル」を意味します。
記号をセルの内容そのものとして数えるのではなく、条件に文字列として与えることがポイントです。
また、条件はダブルクォーテーションで囲むのがルールであり、数式バー上では文字列として認識されます。
この考え方をひとつ覚えておくと、他の記号や複数の条件にも応用しやすくなります。
ハイフンやスラッシュなど単一記号を含むセル数のカウント
実務で多いのは、電話番号や商品コードに含まれるハイフンや、日付風の文字列に含まれるスラッシュをチェックしたいケースです。
例えば、A列の中でスラッシュを含むセルの数を数えたい場合は、COUNTIF(A:A, “*/ *”) のように書きたくなりますが、実際は空白を含めずに COUNTIF(A:A, “*/*”) と指定します。
記号の前後にアスタリスクを付けるのが基本形です。
同様に、コロンを含む時間形式のような文字列を探す場合は COUNTIF(A:A, “*:*”)、アンダースコアなら COUNTIF(A:A, “*_*”) のように書けます。
この形を覚えてしまえば、特定記号を含むセル数のチェックはほとんどCOUNTIFだけで対応可能です。
後述のCOUNTIFSと組み合わせれば、他の条件と併せたフィルタリングも行えます。
複数列・複数範囲での記号セルの合計を求める
COUNTIFは単一の範囲に対して使用しますが、列が複数に分かれている場合や、非連続の範囲にまたがって記号セルを数えたいこともあります。
この場合は、COUNTIFを複数回記述し、その合計を取る形で対応します。
例えば、A列とC列の両方でハイフンを含むセルを合算したいなら、COUNTIF(A:A,”*-*”)+COUNTIF(C:C,”*-*”) のように記述します。
範囲が多い場合は、SUM関数と組み合わせて、SUM(COUNTIF(…)) の形を使う方法もありますが、配列数式や動的配列が関わるため、バージョンによっては扱いが変わります。
最新のエクセルであれば、SUM(COUNTIF({A:A,C:C},”*-*”)) のような書き方も可能ですが、共有ファイルなど互換性に配慮する場合は、素直に足し算でつなぐ方が安全です。
ワイルドカードと競合する記号をCOUNTIFで扱う方法
COUNTIFでは、アスタリスクと疑問符がワイルドカードとして解釈され、これらを「記号そのもの」として検索したい場合には工夫が必要です。
具体的には、チルダを使って「~*」「~?」「~~」と指定することで、ワイルドカードではなく通常の文字として扱わせることができます。
例えば、アスタリスク記号を含むセルの数を数えたい場合は COUNTIF(A:A,”*~**”) と書きます。
同様に、疑問符を含むセルなら “*~?*”、チルダそのものを検索したい場合は “*~~*” となります。
このエスケープ処理を理解していないと、意図しない多くのセルが条件に一致したり、まったくヒットしないという事態に陥ります。
ワイルドカード対象の記号を扱うときには、必ずチルダでエスケープするというルールを身につけておきましょう。
LEN関数とSUBSTITUTE関数で特定記号の個数をカウントする

COUNTIF関数は記号を含むセルの数を数えるのに適していますが、セルの中に含まれる記号の「個数」を求めるには別のアプローチが必要です。
その代表が、LEN関数とSUBSTITUTE関数を組み合わせる方法です。
LENで元の文字列の長さを取得し、SUBSTITUTEで指定した記号を空文字に置き換えた後の長さとの差分を取ることで、記号が出現した回数を求められます。
この方法は、単一のセル内の記号数を求めるだけでなく、SUM関数やSUMPRODUCT関数と組み合わせて範囲単位で合計することもできます。
ここでは、基本的な構文から、複数記号をまとめて数えるための応用パターンまで解説します。
LENとSUBSTITUTEを組み合わせた基本式
単一のセルA1に含まれるハイフンの個数を数える基本形は、次のようになります。
LEN(A1) – LEN(SUBSTITUTE(A1,”-“,””))
まずLEN(A1)で元の文字数を取得し、SUBSTITUTE(A1,”-“,””)でハイフンを削除した文字列を作り、その長さをLENで測ります。
ハイフン1文字につき1だけ文字数が減るので、差分がハイフンの出現回数になります。
この考え方は、スラッシュやコロン、カンマなど他の記号にもそのまま適用できます。
SUBSTITUTEの第2引数に対象記号、第3引数に空文字を指定するというパターンを覚えておくと、特定文字の出現回数カウントに広く応用できます。
誤ってスペースなど別の文字を削除してしまわないよう、対象文字の指定には注意が必要です。
セル範囲全体で記号の総数をカウントする
範囲全体で特定記号の合計個数を求めたい場合は、先ほどの式を各セルに適用した結果をSUM関数で合計します。
例えば、A1:A10に含まれるハイフンの総数を求めたいなら、SUMPRODUCTを用いて
SUMPRODUCT(LEN(A1:A10) – LEN(SUBSTITUTE(A1:A10,”-“,””)))
と記述するのが一般的です。
SUMPRODUCTは配列計算を簡潔に記述できる関数で、LENやSUBSTITUTEを範囲に対して一括適用した結果を合計できます。
従来の配列数式のように特殊な確定操作を必要としないため、共有ファイルでも扱いやすい方法です。
範囲が大きい場合は計算負荷が高くなるため、必要に応じて範囲を絞るなどの工夫も検討しましょう。
複数種類の記号をまとめて数える場合の工夫
ハイフンだけでなく、スラッシュやコロンなど、複数種類の記号をまとめて数えたいケースもあります。
その場合、基本的には記号ごとにLEN-SUBSTITUTEの式を作り、その合計を取ることになります。
例えば、A1セル内のハイフンとスラッシュの合計個数なら、
(LEN(A1)-LEN(SUBSTITUTE(A1,”-“,””))) + (LEN(A1)-LEN(SUBSTITUTE(A1,”/”,””)))
という形です。
範囲全体に対して複数記号を数える場合も同様に、SUMPRODUCTと組み合わせて記号ごとに集計し、それらを合算します。
式が長くなりやすいため、対象記号が多い場合はヘルパー列を設けて記号ごとにカウントし、最後に合計する、といった段階的な設計にすると保守性が高まります。
COUNTIFS・SUMPRODUCTで複数条件の記号カウントを行う
COUNTIFやLEN+SUBSTITUTEの基本を押さえたら、次は複数条件を組み合わせたカウントです。
例えば、「特定の記号を含み、かつ数値が一定以上の行だけ数えたい」「特定の列では記号を含むが、別の列では記号を含まない行だけを抽出したい」といった要件では、COUNTIFS関数やSUMPRODUCT関数が有効です。
いずれも複数の条件を同時に評価し、その結果を集計できる関数です。
この章では、複数条件を扱う際に注意すべき論理構造や、記号条件との組み合わせ方、さらに柔軟なロジックを組み立てられるSUMPRODUCTの活用例を紹介します。
COUNTIFS関数で記号と他条件を同時に指定する
COUNTIFS関数は、複数の範囲と条件の組を指定して、そのすべてを満たす行の数を返します。
例えば、「A列にハイフンを含み、かつB列の値が100以上の行数」を数えたい場合、
COUNTIFS(A:A,”*-*”,B:B,”>=100″)
のように記述します。
1つ目の条件で記号の有無を、2つ目の条件で数値条件を指定している形です。
COUNTIFと違い、COUNTIFSは2つ以上の条件をANDで評価するのが基本で、すべての条件を満たす行のみカウントされます。
日付条件やテキスト条件とも自由に組み合わせられるため、記号の有無をフィルタの一部として利用する場面で重宝します。
OR条件や複雑なロジックにSUMPRODUCTを使う
COUNTIFSは複数条件をANDで評価するのに適していますが、「どちらかの記号を含む」「複数列のいずれかで記号を含む」といったOR条件は苦手です。
このような場面では、SUMPRODUCT関数を使って論理式を数値として評価し、合計する手法が有効です。
例えば、「A列またはB列のいずれかにハイフンを含む行数」を数えたい場合、
SUMPRODUCT(–((ISNUMBER(SEARCH(“-“,A1:A10))) + (ISNUMBER(SEARCH(“-“,B1:B10))) > 0))
のような形式が使えます。
SEARCHで記号を含むかどうかを判定し、TRUE/FALSEを数値化して合計するイメージです。
式は多少複雑になりますが、COUNTIFSでは表現しづらい柔軟な条件を構成できる点が強みです。
記号を含むセルと含まないセルを同時に集計する
集計表の作成では、「記号を含むセル数」と「記号を含まないセル数」を並べて集計し、品質チェックや入力状況の確認を行いたいことがあります。
この場合、COUNTIFを組み合わせて次のような形で整理できます。
記号を含むセル数は COUNTIF(A:A,”*-*”)、記号を含まないセル数は 全体件数 – COUNTIF(A:A,”*-*”) という考え方です。
全体件数は COUNTA(A:A) などで取得します。
より視覚的に分析したい場合は、集計結果を表形式でまとめると分かりやすくなります。
例えば次のような表で、記号の入力状況を一目で把握できます。
| 項目 | カウント式の例 | 内容 |
| 記号ありセル数 | COUNTIF(A:A,”*-*”) | ハイフンを含むセルの件数 |
| 記号なしセル数 | COUNTA(A:A)-COUNTIF(A:A,”*-*”) | ハイフンを含まないセルの件数 |
このように、COUNTIFやCOUNTAを組み合わせれば、記号の有無でデータを二分し、入力チェックや統計に役立てることができます。
ワイルドカードとエスケープの注意点、全角半角の落とし穴

記号を数える際に誤集計を招きやすい要素として、ワイルドカードとエスケープ、そして全角半角の違いがあります。
意図せずワイルドカードとして解釈される記号や、見た目は同じに見えるが内部的には別文字として扱われる全角・半角の混在などが代表的な問題です。
これらを理解していないと、関数の式自体は正しくても、得られた結果が実態と合わないという状況に陥りがちです。
この章では、COUNTIFやSEARCHで使われるワイルドカードの仕様とそれを回避する方法、全角半角を区別して扱う必要がある場面、そして事前のデータクレンジングの重要性について解説します。
ワイルドカードとして扱われる記号とエスケープ方法
エクセルの多くの関数では、アスタリスクと疑問符がワイルドカードとして使われます。
アスタリスクは任意の長さの文字列、疑問符は任意の1文字を意味し、COUNTIFやSEARCHなどで広く利用されています。
しかし、これらの記号そのものを検索したいときには、そのまま書くとワイルドカードとして解釈されてしまい、意図と異なる結果になります。
この問題を解決するために用いるのがチルダです。
たとえば、アスタリスク記号自体を含むセルをCOUNTIFで数えたい場合、「*~**」のように、アスタリスクの前にチルダを付けてエスケープします。
疑問符なら「*~?*」、チルダそのものなら「*~~*」と記述します。
このルールは関数全般で共通しているため、特殊な記号を扱う際の基本知識として押さえておくと安心です。
全角記号と半角記号を区別して数える場合のポイント
全角と半角の記号は、エクセル内部では別の文字コードとして扱われるため、COUNTIFやSUBSTITUTEで区別して数えられます。
例えば、全角のコロンと半角のコロンは別物であり、条件に指定した方にだけマッチします。
この性質を利用して、全角だけ、半角だけを個別にカウントすることも可能です。
一方で、ユーザー入力のデータでは全角と半角が混在していることが多く、そのまま関数でカウントすると、想定より少ない結果になるケースがあります。
このような場合は、事前に置換機能で全角を半角に統一する、または関数で両方を対象にしたカウント式を用意するなど、データの性質に応じた対策が必要です。
集計前に、「どの記号がどの表記で使われているか」を確認するプロセスを挟むと、トラブルを大きく減らせます。
混在データへの対処と前処理の重要性
現場のデータは、必ずしもきれいに整っているわけではありません。
半角と全角が混在していたり、不要なスペースや制御文字が含まれていたりすることもあります。
こうした状態のまま記号カウントを行うと、意図しない抜けや二重カウントが発生するリスクが高まります。
このため、カウント前の前処理が重要になります。
具体的には、TRIM関数で余分なスペースを削除したり、CLEAN関数で印字不能な文字を取り除いたり、SUBSTITUTEで特定の全角記号を半角に変換したりします。
また、元データを直接変更したくない場合は、別列に加工済みの値を作り、その列を対象にカウントする設計が安全です。
前処理を適切に行うことで、記号カウントの精度と再現性を高められます。
実務で使える記号カウントの具体例とテンプレート
ここまで解説した関数や考え方を、実務の具体的なシーンに落とし込んでみましょう。
現場では、電話番号や郵便番号の形式チェック、ログやメッセージ内の特殊記号数の集計、メールアドレスの@マークの有無確認など、記号カウントが役立つ場面は多岐にわたります。
この章では、よくあるケースごとに、すぐに使える式のテンプレートを紹介します。
それぞれのテンプレートは、対象列や対象記号を変えるだけで汎用的に利用できます。
関数の理屈を理解したうえで、テンプレートを自社のフォーマットや業務内容に合わせてアレンジすれば、さまざまなチェックや集計作業の自動化に役立ちます。
電話番号・郵便番号などでハイフンの有無をチェックする
電話番号や郵便番号では、ハイフンの有無や位置がデータ品質の指標になることが多いです。
A列に電話番号が入力されている場合、ハイフンを含むセル数は COUNTIF(A:A,”*-*”) で簡単に集計できます。
逆に、ハイフンが入力されていないセルの件数は、COUNTA(A:A)-COUNTIF(A:A,”*-*”) で求められます。
この2つを並べて集計すると、入力ルールの遵守状況を一目で把握できます。
また、A1セルのハイフンの個数が1つちょうどであるかをチェックしたい場合は、LENとSUBSTITUTEを使って、
LEN(A1)-LEN(SUBSTITUTE(A1,”-“,””))=1
という論理式を用います。
この結果をIF関数と組み合わせれば、「形式OK」「ハイフン数が不正」といった判定表示も簡単に行えます。
メールアドレスやIDで@やドットの個数を確認する
メールアドレスの検証では、@マークの有無や個数、ドットを含む位置などが重要なチェックポイントになります。
A列にメールアドレス候補が入力されている場合、@を含むセルの数は COUNTIF(A:A,”*@*”) で取得可能です。
ただし、@が複数含まれているものや、先頭・末尾に来ているものは形式として不正であるため、さらに厳密なチェックが必要になります。
例えば、A1セル内の@の個数が1つであるか確認するには、LEN-SUBSTITUTEの式で
LEN(A1)-LEN(SUBSTITUTE(A1,”@”,””))=1
という判定を行います。
同様に、ドットの個数を確認したい場合は対象文字を「.」に置き換えるだけです。
これらを組み合わせて、メールアドレスの簡易バリデーションルールを作ることができます。
文章中の記号頻度を分析してテキストの特徴を把握する
レビューコメントやアンケートの自由記述など、文章データを扱う場面では、感嘆符や疑問符、絵文字などの記号頻度から、テキストの特徴やトーンを分析することがあります。
エクセルでも、LENとSUBSTITUTEの組み合わせを使えば、こうした記号頻度を定量的に把握できます。
例えば、A列に文章が入力されているとして、「!」の総数をB1セルに求める場合、
SUMPRODUCT(LEN(A1:A100)-LEN(SUBSTITUTE(A1:A100,”!”,””)))
のように記述します。
同様に、「?」やその他の記号も対象文字を差し替えるだけで集計できます。
複数種類の記号を分析したい場合は、列ごとに対象記号を変えた式を配置し、表として比較すると、テキストの傾向が視覚的に把握しやすくなります。
実務で役立つ式テンプレート一覧
ここまで紹介した代表的なパターンを、表形式で整理しておきます。
対象列や記号を自社データに合わせて差し替えて利用してください。
| 目的 | 例示関数 | ポイント |
| 記号を含むセル数 | COUNTIF(A:A,”*-*”) | ハイフンを含むセル数 |
| 記号を含まないセル数 | COUNTA(A:A)-COUNTIF(A:A,”*-*”) | 全体件数との差分 |
| セル内の記号個数 | LEN(A1)-LEN(SUBSTITUTE(A1,”-“,””)) | 特定記号の出現回数 |
| 範囲内の記号総数 | SUMPRODUCT(LEN(A1:A10)-LEN(SUBSTITUTE(A1:A10,”-“,””))) | 範囲全体の合計 |
| 記号と数値条件 | COUNTIFS(A:A,”*-*”,B:B,”>=100″) | 複数条件のAND |
これらのテンプレートを基に、自分の用途に合わせたカスタマイズを行えば、多くの記号カウントニーズに対応できます。
まとめ
エクセルで記号の数を数えるには、目的に応じて関数を使い分けることが重要です。
特定の記号を含むセルの件数を知りたいならCOUNTIF・COUNTIFSを、セル内に含まれる記号の個数を知りたいならLENとSUBSTITUTEの組み合わせを基本として考えると整理しやすくなります。
さらに、複数条件やOR条件を扱う場合にはSUMPRODUCTを使うことで柔軟なロジックを構築できます。
一方で、ワイルドカードとして扱われる記号をエスケープする方法や、全角半角の違い、混在データに対する前処理の重要性も無視できません。
これらのポイントを押さえておくことで、意図しない誤集計を防ぎ、安定した結果を得られます。
本記事で紹介した式テンプレートや考え方を、自身のデータ構造や業務フローに合わせてアレンジし、記号カウント作業の効率化と品質向上に役立ててください。
関数の仕組みを理解しておけば、似たような要件にも応用しやすくなり、エクセルでのデータ処理の幅が大きく広がります。
コメント