残業を減らす!Officeテクニック
名称とIDを同じセルに入れたExcelの表を渡された! 「*」を使った数式で一時しのぎ
2025年8月4日 08:02
Excelで作られた表の中には、見た目を優先した結果、検索や抽出といった処理がしにくい構造になっているものがあります。例えば以下のような表です。特定の文字列を検索することはできますが、例えば「SEIT」から始まるセミナーは何件あるか? といった時に困ります。
表の形式が良くないのはもちろんですが、実務では今すぐ処理したいことがありますよね。今回は、あいまい検索を実現する“ワイルドカード”の「*」(アスタリスク)について振り返ってみましょう。
ワイルドカードを利用して置換する
上記のような表からIDだけを取り出したいことはよくあります。FIND / LEFT / MID関数やTEXTSPLIT関数を使ってIDだけ取り出す方法、[Ctrl]+[E]キーを押してフラッシュフィルを利用する方法もありますが、単純に[検索と置換]ダイアログボックスで“ワイルドカード”を使う方法もおすすめです。
「*」は任意の文字列を意味するワイルドカードです。1文字を意味する「?」とセットで使うこともあります。
「*(」は、『任意の文字列+「(」』という意味となり、IDだけ残す場合は「*(」を空白で置換することで、「(」より前の文字列をすべて削除できます。作業用の列にデータをコピーして処理してみましょう。
セミナー名だけ残したい場合は「(」より後ろの文字列をすべて置換。つまり[検索する文字列]に「(*」と入力して空白で置換すれば削除できます。
COUNTIFS関数とワイルドカードでカウントする
現状の表を整形せずに処理したいこともあるでしょう。例えば、IDに「SEIT」を含むデータを数えたいときは? 条件付きでデータを数える関数として、COUNTIF / COUNTIFS関数の利用を思いつくでしょう。
単純に「SEIT」という文字列を検索条件としても一致するデータはありません。検索すべきは「(任意の文字列)+ セルG2の値 +(任意の文字列)」です。ワイルドカードで表現すると「"*" & G2 & "*"」となります。「*」は文字列なので半角の「"」で囲み、文字列を連結する「&」演算子でつなげるだけです。
XLOOKUP関数とワイルドカードで検索する
XLOOKUP関数でワイルドカードを利用する場合は、検索値にワイルドカードを含めたうえで、5つ目の引数[一致モード]に[ワイルドカード文字との一致]を指定することがポイントです。
表の整形が難しい状況でも、ワイルドカードを活用すれば、検索や集計、置換といった作業を効率化できます。XLOOKUP関数でワイルドカードを利用した際に「#N/A」エラーで困ったら、5つ目の引数[一致モード]を思い出してください。