エクセルで特定の記号の数を数える関数!COUNTIFを使って文字をカウント

[PR]

エクセルで「記号って何個入力されてるんだろう」「特定の記号だけ数えたい」が頻繁にある業務に直結する疑問です。セルに含まれる“!”や“#”などの記号を、自動で正確に数える方法を知ることで、作業効率が格段にアップします。この記事では、COUNTIF関数を中心に、LEN+SUBSTITUTE関数やSUMPRODUCTなどを組み合わせて記号の数を数える方法を最新情報に基づいて詳しく解説します。初心者から中級者まで役立つ内容です。

目次

エクセル 記号の数を数える 関数を使う基本方法

特定の記号の数を数える基本的な関数は、まずセル内の文字数を把握するLEN関数と、指定した文字を削除するSUBSTITUTE関数です。これらを組み合わせることで、記号の個数を計算します。例えばセルA1に含まれる“#”の数を数えるには、「=LEN(A1)‐LEN(SUBSTITUTE(A1,“#”,“”))」という式を使います。
この方法は文字列全体から対象記号を除去後の長さを引くことで、対象記号の出現回数を算出する論理に基づいています。最新のエクセル環境でも広く使用されており、記号を目的に応じて変えるだけで応用が利きます。

LEN関数とは何か

LEN関数は指定したセルまたはテキストの**全ての文字数**を数えます。英字・記号・空白・全角文字も1文字ずつ数えるため、文字列長を精確に把握するのに優れています。例として「Hello!#」という文字列なら、空白がなければ6文字として戻します。
ただし、表示形式やセルのフォーマットは反映されず、見た目と実際の文字数が異なる場合があるため注意が必要です。

SUBSTITUTE関数で記号を削除する方法

SUBSTITUTE関数は文字列中の指定した文字を別の文字列に置き換える機能を持ちます。対象記号を空文字に置き換えることで「削除」と同様の効果を得られます。例えばA1セル内の“*”を削除した文字列をSUBSTITUTE(A1,“*”,“”)で取得できます。
この操作により、元の文字数から記号を除いた後の文字数との差を取ることで、その記号が何回あったかが計算できるのです。

LENとSUBSTITUTEを組み合わせた式の例

具体的な例として、セルA1に含まれる“@”の個数を数える式は次のようになります。
=LEN(A1)‐LEN(SUBSTITUTE(A1,"@",""))
この式ではまずA1の文字数を全て数え、次に“@”を削除した後の文字数を数えてその差を取っています。差が“@”の数に等しいという原理です。
同じ原理を使えば任意の記号(例:#, %, !, *, +)を対象にできます。

COUNTIF関数で記号を含むセルを数える応用技

COUNTIF関数はセルそのものに含まれる文字列が条件に合致するかどうかを判定し、セルを数える関数です。記号を**文字列として含むかどうか**でセルの数を集計できます。記号だけがセル内にある場合はもちろんですが、文字列中に含まれる記号を「含むセル数」で把握したい場合に力を発揮します。

COUNTIFの基本構文

COUNTIF関数は「ある範囲内で指定条件を満たすセルの数」を返します。構文は=COUNTIF(範囲, 条件)です。記号だけを条件とするなら=COUNTIF(A1:A10, "#")のように使います。範囲内にある“#”だけが入力されたセルの数が返ります。

ワイルドカードを使って文字列に記号を含むセルを数える

セル内に記号を含むかどうかを判定したい場合はワイルドカード“*”を使います。例えば“#”を含むセルすべてを数えたいなら=COUNTIF(A1:A10, "*#*")とします。文字列の前後に何があっても“#”が含まれていれば条件が真になります。
この方法は、文字列中のどこに記号が入っているかを問わない柔軟なカウントに適しています。

記号と文字の大文字小文字の扱い

COUNTIFは記号の場合、大文字・小文字の区別は通常問題になりません(記号は大文字小文字がないため)ですが、文字の場合は区別せずにカウントされます。
記号と文字を混在させた条件設定の場合、SUBSTITUTE+LENの方法の方が文字数や出現頻度を正確にコントロールできます。COUNTIFはあくまで「セルの条件」ベースなので「文字列の何文字目か」「何回出ているか」には適しません。

複数の記号を一度に数える方法

複数種類の記号をまとめて数えたいときは、記号1種類ずつ数える式を組み合わせたり、SUMPRODUCT関数を使って配列として処理する方法があります。これによって効率的に複数記号の合計出現回数を求めることが可能です。

記号ごとにSUBSTITUTEをネストする方法

対象の記号が少ない場合はSUBSTITUTE関数を入れ子にするネスト型で記号ごとに除去・差分を取る方法があります。
たとえば“#”と“%”と“&”を数えたいなら
=LEN(A1)‐LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"#",""),"%",""),"&",""))
こうすると元の文字数からこれら三つの記号すべてを除去した後の文字数との差が、三種類合計の記号数となります。

SUMPRODUCTを使って複数セル・複数記号を配列で処理する

複数のセルにまたがる範囲で合計を出したいときはSUMPRODUCTを使います。この関数は配列を扱うのに適しており、次のような式になります。
=SUMPRODUCT(LEN(範囲)‐LEN(SUBSTITUTE(範囲,"記号","")))
記号が1種類ならこれだけでよく、複数記号を扱いたいなら範囲の式とネストSUBSTITUTEを組み合わせて複数記号の合計を取得できます。

LET関数や文字列関数との組み合わせ

エクセルの最新版ではLET関数を使って中間変数を作ることで式を読みやすく管理しやすくできます。また文字列関数(UPPER、LOWER)を組むことでケースインセンシティブ(大文字小文字区別なし)にするだけでなく、記号と文字の混同を防げます。これにより式が長くなっても分かりやすく保てます。

COUNTIFだけでは足りないケースと代替案

COUNTIF関数はセル単位での条件に合うかどうかを見るため、「文字列の一部に含むかどうか」「記号が何回あるか」は判断できません。そのようなケースでは他の関数や方法が必要になります。ここではそのような代替案を紹介します。

文字列中の特定記号の出現回数を知りたいとき

COUNTIFではセルが条件に一致するか否かを判定するので「文字列中に#がいくつあるか」は求められません。この場合、先に触れたLENとSUBSTITUTEを使う方法が必要です。
この組み合わせで記号を除く前後の文字数差を計算し、その差が記号の数となります。さまざまなタイプの記号に対応可能です。

複数の記号を一度に処理したいとき

記号が多い場合、ネストSUBSTITUTEでは式が非常に長くなり読みにくくメンテナンス性も低くなります。そのような場合はSUMPRODUCTや配列定数を使います。
また、VBA(マクロ)を使ってプログラムで文字列を走査する手法もあります。業務で大量データを扱うならこちらが現実的な選択肢になることがあります。

COUNTIFS関数やフィルターとの併用

COUNTIFSは複数条件のセルを数える関数です。記号を含むセルだけでなく追加条件(例えば別の列の値や日付など)と組み合わせて集計したい場合に使用します。
たとえば「ステータスが完了で、内容に#を含むセル数」を数えたいときにCOUNTIFSが便利です。条件式にはワイルドカードを使って記号の含有を判定します。

特殊な記号や全角・半角記号を扱う注意点

記号には半角記号・全角記号があり、見た目が似ていても別文字として扱われるものがあります。特に日本語環境ではこの区別が結果に大きく影響します。最新のエクセル環境でもこの差異は残っていますので常に注意して設計する必要があります。

全角と半角の違いを認識する

例えば全角の「!」と半角の「!」は Unicode で異なるコードです。LEN+SUBSTITUTE の方法ではそれぞれ別の記号として扱われるため、意図しない結果になることがあります。
もし全角と半角の両方を数えたいなら、それぞれの記号を別々に数える式を用意するか、SUBSTITUTEで相互変換して統一してからカウントする方法があります。

見えない記号・空白・改行文字などの扱い

セル内にスペースや改行、タブ、非表示文字(ゼロ幅スペースなど)が混じっていることがあります。これらも LEN 関数では「文字」として数えられてしまいます。
不要な見えない記号を除去するには TRIM や CLEAN 関数を使ってクリーンアップしてからカウントした方が正確な結果になります。

記号の入力誤差やフォントの関係

見た目で似ている記号(縦棒、破線、ダッシュなど)が異なる文字として入力されていることがあります。フォントによっては見え方が異なるだけで別の文字コードが割り当てられていることも。
作業前にどの記号が使われているかを確認し、Excel の置換や検索機能で統一することをおすすめします。

実践例:複合条件で記号の数を数える

実際の業務では「ある列のセルで、記号が何回出ていて、かつ別の列の状態が特定である」など複数条件の元で記号の数を数えたいことが多いです。ここではそのような複合条件を含んだ実用的な例を見ていきます。

COUNTIFSとLEN/SUBSTITUTE の組み合わせ

たとえば列Aにテキスト、列Bにステータス(例 完了・未完了)があり、「ステータスが完了のセルで“#”が何個あるか」を数えたいなら、まずフィルター条件で対象セルを絞るのが一般的です。最新の Excel では SUMPRODUCT を使って一つの式で条件と記号数の両方をチェックできます。
例として、範囲A1:A10とB1:B10があり、B列が完了のものだけ対象とするなら
=SUMPRODUCT((B1:B10="完了")*(LEN(A1:A10)-LEN(SUBSTITUTE(A1:A10,"#",""))))という式で一気に集計できます。

文字列中の記号をカウントしてレポートにまとめる方法

多数のセルと様々な記号に対して定期的に集計が必要な場合、シートに記号ごとの集計表を作ると便利です。
記号別の列を用意し、それぞれに LEN/SUBSTITUTE 式を当て、それを SUMPRODUCT 等で合計。Pivot テーブルなどで視覚的に整理すれば報告用途にも使いやすくなります。

条件付き書式による記号の強調と目視確認

記号が何回あるかをカウントした後、そのセルをハイライトさせたい場合は条件付き書式を使います。記号数が一定数以上なら背景色を変えるなどして視覚的に確認できるようにすると、ミスを見逃しにくくなります。
これにより数字だけでなく視覚的なチェックができるようになり業務の信頼性が向上します。

関数を組み合わせてユーザー定義の関数(UDF)やマクロで対応する方法

大量データや複雑な条件が頻繁に発生する環境では、標準関数だけで式が複雑になることがあります。そのような場合はユーザー定義関数(UDF)やVBAマクロを使うことで見通しが良く、保守もしやすい構造を作れます。

VBAで記号の出現回数を数えるユーザー定義関数

マクロで文字列を一字ずつ走査し、対象の記号と一致するかチェックしてカウントする関数を作ると、複数記号や条件付きの処理も簡単に書けます。
例えば Public Function CountSymbols(text As String, symbols As String) As Long のように引数を取り、symbols に含まれる複数記号すべてをチェックする処理を実装することができます。

動的配列関数との組み合わせ例

最新の Excel では動的配列機能があり、LET 関数や配列定数を使って複数記号を一度に処理できます。配列定数で記号を列挙し、SUMPRODUCT 等と組み合わせて処理する方法がシンプルかつ拡張性があります。
例えば {“#”;”%”;”&”} のような記号の配列を変数に持たせ、それを走査する式を作れます。

パフォーマンス面での注意点

記号を数える式が長くなると、特にネスト SUBSTITUTE が深くなると処理が重くなることがあります。範囲が大きい場合や複数記号を扱う場合は、標準関数の複雑化前にマクロやユーザー定義関数を検討してください。
また、計算モードを手動にして式の再計算をコントロールしたり、補助列を用いて中間結果を持たせることで応答速度を保てます。

まとめ

エクセルで「記号の数を数える」場合、COUNTIF 関数は**セルに記号を含むかどうかの判定**に向いていますが、「文字列中に記号が何回あるか」を数える用途では LENとSUBSTITUTE 関数の組み合わせ、または SUMPRODUCT を使った配列処理が確実です。
全角/半角の区別や見えない記号の存在にも注意し、文字列のクリーンアップを行うと正確さが増します。
作業の規模や頻度によっては、UDF や VBA を使うことも視野に入れるとよいでしょう。
これらの関数を使いこなすことで、記号の数を数える作業が非常に効率的かつ正確になり、答えを手動で探す時間を削減できます。
日々の業務の中で、記号の数を把握する必要がある場面で、ぜひこの方法を活用してください。

関連記事

特集記事

コメント

この記事へのトラックバックはありません。

TOP
CLOSE