エクセルの置換でワイルドカード(*・?)が使えない?関数ごとの対応表と正しい使い方

Excel

エクセルで「検索と置換」を使っていて、「●文字列の一部だけ一致するデータをまとめて置換したい」「●型番の末尾だけ違う商品名をまとめて検索したい」と思ったことはありませんか。そんなときに便利なのが*(アスタリスク)や?(クエスチョンマーク)を使う「ワイルドカード」ですが、いざ関数の中で使ってみると「あれ、反映されない…」とつまずく人がとても多い機能でもあります。

実はワイルドカードは、エクセルの機能や関数によって「使えるもの」と「使えないもの」がはっきり分かれています。この違いを知らないままだと、正しい書き方をしているはずなのに何度試してもエラーや誤動作になり、時間だけが過ぎてしまいます。この記事では、よくあるつまずきポイントを一つずつ整理しながら、ワイルドカードの正しい使い方と、使えない場面での代わりの方法を解説します。

こんな悩みはありませんか?

  • ●SUBSTITUTE関数でワイルドカードを使って置換しようとしたのに、*がそのまま文字として扱われて反映されない
  • ●「検索と置換」ダイアログでワイルドカードを使いたいが、オンにするチェックボックスが見当たらない
  • ●データの中に本物の*や?の文字が含まれていて、ワイルドカード扱いされて検索・置換がヒットしすぎてしまう
  • ●COUNTIFやSUMIFでワイルドカードの部分一致集計をしたいが、書き方が合っているか自信がない

まずは全体像:ワイルドカードが使える機能・使えない機能の一覧

つまずきの根本原因は、エクセルの中でも「ワイルドカードが効く機能」と「効かない関数」が混在していることにあります。まずは代表的なものを整理した一覧表を確認してください。

機能・関数ワイルドカード備考
検索と置換(Ctrl+H)使える*・?を入力するだけで自動的に部分一致になる
COUNTIF/COUNTIFS使える“*文字列*”のようにダブルクォーテーションで囲んで指定
SUMIF/SUMIFS使える条件範囲の指定方法はCOUNTIFと同じ
MATCH(完全一致モード)使える照合の種類を0(完全一致)にした場合でも文字列条件にはワイルドカード可
XLOOKUP(一致モード2)使える一致モードを2(ワイルドカード文字との一致)にした場合のみ。省略時はワイルドカードとして扱われない
SUBSTITUTE使えない*・?はただの文字として扱われ、置換されない
FIND使えない大文字小文字を区別する完全一致検索のみ対応
SEARCH使える大文字小文字を区別しない検索。文字列の位置を返す(置換はできない)
REGEXREPLACE(Microsoft 365の場合)使える(正規表現)ワイルドカードではなく正規表現だが、部分一致の置換が可能

つまり「検索・置換ダイアログ」や「COUNTIF系の集計関数」「XLOOKUP」ではワイルドカードが効くのに、文字列を書き換えるSUBSTITUTEや、完全一致で探すFINDでは効かないという仕様の違いが、混乱の正体です。ここから先は、悩み別に具体的な対処法を見ていきましょう。

悩み1:SUBSTITUTE関数でワイルドカードが反映されない

「型番A-*を全部『型番B』に置換したい」と考えて=SUBSTITUTE(A2,"型番A-*","型番B")のような数式を組んでも、*を含む文字列と完全に一致した場合しか置換されません。これはSUBSTITUTEがワイルドカードに対応していない仕様のためで、書き方の間違いではありません。

SUBSTITUTE関数にワイルドカード(*)を指定しても文字列がそのまま残り、置換されていない結果画面

対処法A:Microsoft 365なら正規表現の新関数を使う

Microsoft 365のExcelでは、正規表現に対応したREGEXREPLACE関数が使えるようになっています。ワイルドカードそのものではありませんが、パターンを指定して部分一致の置換ができるため、SUBSTITUTEでできないことの多くをカバーできます。

  1. 置換したいセルを選び、数式バーに=REGEXREPLACE(A2,"型番A-.+","型番B")のように入力する
  2. 「.+」は「任意の文字が1文字以上続く」という正規表現で、ワイルドカードの*に近い役割をする
  3. 数式バーで#NAME?エラーが出る場合は、お使いのExcelのバージョンがまだ対応していないため、対処法Bに進む

対処法B:関数を使わず「検索と置換」ダイアログで一括処理する

数式にこだわらないのであれば、最も確実なのは検索・置換ダイアログでワイルドカードを使う方法です。こちらは古いバージョンのExcelでも同じ手順で使えます。

  1. 置換したい範囲を選択し、Ctrl+Hキーで「検索と置換」ダイアログを開く
  2. 「検索する文字列」に型番A-*、「置換後の文字列」に型番Bと入力する
  3. 「オプション」ボタンを押し、「検索場所」が「数式」になっていることを確認する
  4. 「すべて置換」を押すと、*以降のどんな文字列でも「型番B」にまとめて置換される
「検索と置換」ダイアログでアスタリスク(*)を使い、型番の異なる複数データを一括置換する設定画面
「検索と置換」ダイアログでアスタリスク(*)を使い、型番の異なる複数データを一括置換する設定画面

悩み2:本物の*や?の文字が検索・置換に引っかかってしまう

逆に困るのが、商品コードや型番の中に本物の*や?が含まれているケースです。この場合、検索と置換ではその*や?もワイルドカードとして解釈されてしまうため、意図しない範囲まで一致してしまいます。

この場合は、記号の直前に半角のチルダ(~)を付けることで「ワイルドカードではなく、その記号自体を検索する」という意味になります。

検索したい内容入力する文字列
任意の文字列(ワイルドカードとして)*
本物のアスタリスク「*」という文字そのもの~*
本物のクエスチョン「?」という文字そのもの~?
本物のチルダ「~」という文字そのもの~~

悩み3:COUNTIF・SUMIFでのワイルドカードの正しい書き方に自信がない

COUNTIFやSUMIFは元々ワイルドカードに対応していますが、ダブルクォーテーションの位置を間違えてエラーになる人が少なくありません。基本の書き方は次の3パターンだけ覚えておけば十分です。

  • 前方一致(「型番A」から始まる):=COUNTIF(A:A,"型番A*")
  • 後方一致(「-完了」で終わる):=COUNTIF(A:A,"*-完了")
  • 部分一致(「サンプル」を含む):=COUNTIF(A:A,"*サンプル*")

セル参照と組み合わせたい場合は、=COUNTIF(A:A,"*"&B2&"*")のように、&(アンパサンド)で文字列を連結します。B2セルに入力したキーワードを含む件数を、数式を変えずに集計できるため実務ではこの形が特に便利です。

COUNTIF関数でセル参照とワイルドカードを組み合わせ、キーワードを含む件数を自動集計した結果画面

なお、あいまいな条件で目的のデータを探すという意味では、XLOOKUP関数で一致モードを2(ワイルドカード文字との一致)にする方法も相性が良い方法です。COUNTIFで件数を数えるだけでなく、該当する行のデータそのものを取り出したい場合はこちらも参考にしてください。

応用:似ているけれど微妙に表記が違うデータを見つけたいとき

ワイルドカードは「表記ゆれを含んだ重複っぽいデータ」を洗い出す場面でも活躍します。たとえば「株式会社」の表記が「(株)」「㈱」などバラバラな取引先名簿から、特定の会社名を含むものだけを抽出したい場合にもCOUNTIFのワイルドカードが使えます。ただし、完全に一致する重複データを一括でチェック・削除したいだけであれば、関数を使わずに標準機能で済ませる方法もあります。作業内容に応じて、重複データのチェック・削除方法と使い分けるとよいでしょう。

まとめ

ワイルドカードは「検索・置換ダイアログ」「COUNTIF・SUMIF」「SEARCH」「XLOOKUP(一致モード2)」では使えるのに、「SUBSTITUTE・FIND」では使えないという明確な線引きがあります。この違いさえ覚えておけば、「反映されない」と悩む時間を大幅に減らせます。関数でどうしても部分一致の置換をしたい場合は、Microsoft 365のREGEXREPLACE関数、それが使えなければ検索と置換ダイアログでの一括処理を選びましょう。

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