ExcelのCOUNTIFで「*」や「?」を文字として数える:チルダの使い方と落とし穴

VBA・Officeカテゴリを表すパンダのイラスト VBA・Office

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。MicrosoftのCOUNTIF関数に関する公式説明をもとに、ワイルドカードとエスケープの仕組みを、架空の表で安全に試せるよう整理しました。

検証ステータス:公式仕様を参照して構成。Excel実機での実行・画面表示は未確認です。 バージョン、地域設定、入力形式によって表示や操作が異なる場合があります。

「星印が付いた商品」だけ数えたいのに、全部数えてしまう

商品管理表で、特別な商品名にだけ星印を付けているとします。「通常品」「特価*」「試作品?」のような名前です。COUNTIFで「星印を含む行」を数えようとすると、予想より大きな件数が出ることがあります。理由は、Excelの検索条件では星印が普通の文字ではなく「任意の文字列」を表す記号として解釈されるからです。

たとえば条件に星印を一つだけ指定すると、星印が書かれたセルだけでなく、さまざまな文字列が一致します。目視では小さな違いでも、集計結果では大きな違いになります。これを理解するには、文字としての星印と、検索記号としての星印を区別する必要があります。 、値を変更しない練習用の表を作り、最初にわざと広く一致させ、次に「~」を加えて意味が変わるところを観察します。実データを直接編集する必要はありません。なお、ここで扱うのはCOUNTIFの条件式であり、Excel全体の正規表現やファイル名検索と同じ規則ではありません。

練習用データを作る

空のワークシートのA1に「商品名」と入力し、A2からA7までに順番に「通常品」「特価」「試作品?」「在庫~」「」「空白なし」と入力します。星印、疑問符、チルダは半角文字を使ってください。全角の「*」「?」では別の文字として扱われます。

別の列、たとえばC列に条件式を置きます。まずA2:A7の6行を対象とし、行を追加したら範囲も更新するようにします。空白セルや数値が混在する業務表では結果の解釈が変わることがあるため、最初は上記の文字列だけで試します。

C列に入力する式何を調べるかこの練習表での予想
=COUNTIF(A2:A7,"*")文字列に広く一致6
=COUNTIF(A2:A7,"~*")星印そのもの1文字1
=COUNTIF(A2:A7,"*~*")末尾が星印の文字列2
=COUNTIF(A2:A7,"*~**")星印を含む文字列2
=COUNTIF(A2:A7,"*~?*")疑問符を含む文字列1
=COUNTIF(A2:A7,"*~~*")チルダを含む文字列1

表の数値は説明用の予想結果であり、この制作時にExcelを起動して確認した値ではありません。「」だけの条件は、文字列全体を表すワイルドカードです。一方、「~」は文字としての星印一つに一致します。ここが最初の発見です。

最初に試す3つの式

最初にC2へ次の式を入力します。

=COUNTIF(A2:A7,"*")

「星印のある商品を探したつもりなのに、通常品まで数える」という現象を観察してください。この条件の星印は文字の有無を検査する印ではなく、任意の文字列に一致するワイルドカードです。練習表はすべて文字列なので、6件になると予想できます。ただし、一般の表に空白や数値、数式が含まれると単純に総行数と一致するとは限りません。

次にC3へ次の式を入れます。

=COUNTIF(A2:A7,"~*")

この式は、セル全体が星印一文字である場合を探します。今回のデータではA6の一行だけです。先頭にチルダを付けると、直後の星印をワイルドカードではなく文字として扱えるためです。「特価*」は文字列全体が星印一つではないので、ここでは一致しません。

続けてC4へ次の式を入れます。

=COUNTIF(A2:A7,"*~*")

左側の星印は任意の前置文字列、右側の「~」は文字としての星印です。したがって「特価」と「*」が候補になります。前の式と比較すると、「完全一致」と「末尾一致」の違いが見えてきます。検索対象を増やしたいときに、どの位置へワイルドカードを置くかが重要です。

「含む」「末尾」「完全一致」を図で分ける

同じ星印でも、条件文字列の中での役割が異なります。次の図はExcelの内部実装を再現したものではなく、検索条件を読み解くための概念図です。

flowchart TD
    A["COUNTIFの条件を読む"] --> B{"星印の前にチルダがある?"}
    B -->|はい| C["文字としての星印を照合"]
    B -->|いいえ| D["任意の文字列として照合"]
    C --> E["前後のワイルドカードで位置を指定"]
    D --> E
    E --> F["セルごとの一致数を合計"]

図の左側で注目するのは、チルダが星印の意味を切り替える点です。後半の「前後のワイルドカード」は一致させたい位置を決めるためのものです。実際には条件文字列全体が解釈されるので、図を「Excelが必ずこの順番で処理する」という性能説明として使わないでください。

文字としての星印を「どこかに含む」セルを数えるなら、星印の前後に任意の文字列を許します。具体的には「~」です。左端と右端の星印はワイルドカードで、中央の「~」だけが文字としての星印です。連続した記号に見えても、それぞれ役割が異なります。読むときは「任意の前半」「本物の星印」「任意の後半」と三つに分解すると迷いません。

疑問符とチルダも同じ発想で調べる

COUNTIFの条件で疑問符は、通常、任意の一文字に一致するワイルドカードです。「?」だけを条件にすると、文字としての疑問符一つを探すのではありません。疑問符そのものを探したいときは「~?」を使います。たとえば「~?」なら、疑問符を含む文字列を探す条件になります。練習表では「試作品?」が候補です。

さらに紛らわしいのがチルダ自体です。ワイルドカードをエスケープする役割のある文字を、そのまま探したい場合には「~~」と重ねます。「~~」は前後に任意の文字列を許しつつ、中央の文字としてのチルダを探す形です。練習表では「在庫~」が該当する想定です。

ここで、記号を三つとも同じものとして扱わないことが大切です。星印は任意の長さ、疑問符は一文字、チルダは直後の特殊記号を文字として扱うためのエスケープに関わります。検索条件を人に説明するときは「どの記号が検索用で、どれが実際の商品名の一部か」を区別して書くと、レビュー担当者にも伝わります。

1条件だけ変えて比較する

最初の「~」から、末尾へもう一つ星印を追加して「~」に変えてみてください。練習表ではどちらも2件と予想されるため、違いが見えません。そこでA8に「先頭限定」という架空の商品名を一行追加し、集計範囲をA2:A8へ変更します。すると、末尾が星印の条件「~」では追加行は一致せず、星印を含む条件「*~」では一致します。

この比較は、条件を増やすと何が変わるかを理解するための実験です。単に二つの式を暗記するより、データ側を一つだけ変えた方が「末尾」と「含む」の差がはっきりします。業務で検索条件を作るときも、期待する一致例だけでなく、一致してほしくない例を一つ加えると誤集計に気づきやすくなります。

なお、A8を追加した後に範囲を更新し忘れると、どちらの式も追加行を見ません。これは検索条件の誤りではなく、集計範囲の指定漏れです。条件式とデータ範囲を別々に点検する習慣が重要です。

うまく数えられないときの切り分け

まず、半角と全角を確認してください。全角の星印は、半角のワイルドカードとは異なります。コピーした文字が見た目だけ似ている場合、式を正しく作っても一致しません。入力欄の文字を直接比較し、必要なら新しい練習シートで半角文字を入力し直します。

次に、セル全体が一致する条件なのか、部分一致の条件なのかを確認します。「~」は星印一文字の完全一致を想定しますが、「~*」は星印を含む文字列です。「特価」を数えたいのに「~*」を使っていたら、エスケープの使い方ではなく前後のワイルドカード不足が原因です。

三つ目は、範囲とセルの型です。COUNTIFは数値、空白、数式結果、文字列の混在で期待と違う結果になることがあります。たとえば空白のように見えて実際にはスペースが入ったセルもあります。文字列の先頭や末尾に空白が紛れていないか、数式が返した値なのかを切り分けてください。件数が違うときは、対象列をフィルターで絞り込み、該当候補を目で確認すると原因を追いやすくなります。

四つ目は、Excelの引数区切り記号です。地域設定によっては式中のカンマではなくセミコロンを使用する環境があります。式を貼り付けた時点で構文エラーになるなら、条件の意味を疑う前にExcelの地域設定と関数入力補助を確認します。関数名のローカライズにも環境差があるため、この記事の式がそのまま全環境で動くとは断定しません。

実務ではどこまでCOUNTIFに任せるか

商品名や申請番号に記号が入るだけなら、COUNTIFのワイルドカードとチルダで十分なことがあります。別の列に分類コードを持たせられるなら、表示名に含まれる星印だけで業務上の「特価」を判定するより、分類コードを条件にする方が意味が明確です。星印が単なる装飾だったり、入力者によって付け忘れがあったりする場合、検索式を工夫してもデータ品質の問題は解決しません。

また、COUNTIFのワイルドカードは一般的な正規表現ではありません。「任意の数字3桁」「特定の記号の直後だけ一致」など複雑な規則を無理に一つの条件式で表そうとすると、保守が難しくなります。必要なら補助列を作って、文字列の検査結果をTRUE/FALSEなどで可視化し、その結果を集計する方法も検討してください。

集計を本番の管理表へ反映する前に、まずコピーしたシートで「一致する例」「一致しない例」「境界の例」を用意します。元データを上書きせず、式の結果を検算できる形に残すことが大切です。とくに売上や在庫の集計では、条件式がエラーを出さずに間違った件数を返す方が発見しにくいためです。

まとめ

COUNTIFの星印は、検索条件では原則として任意の文字列を意味します。文字としての星印を探すなら「~*」、疑問符なら「~?」、チルダなら「~~」を使います。さらに、前後へワイルドカードを置くかどうかで完全一致、末尾一致、部分一致を区別できます。

今回の小さな練習表では、「同じ星印なのに、チルダ一つで集計の意味が変わる」ことがポイントです。予想件数と違ったら、記号の半角・全角、条件の前後、集計範囲、データの型を順番に確認してください。正しい式を覚えるだけでなく、意図しない行が一致しないことまで確認すると、日々の集計に安心して使えます。

公式資料

文書情報

記事タイトル
ExcelのCOUNTIFで「*」や「?」を文字として数える:チルダの使い方と落とし穴
作成日
更新日
Source URL
https://papanda925.com/?p=18495

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました