Excel(エクセル)で特定の文字から始まるセルを検索したり、特定の文字で終わるセルを検索したい時があると思います。
そんな時は、ワイルドカード文字という特殊文字を利用します。
ワイルドカードを使うと、『〇〇を含む』文字列、『〇〇で終わる』文字列、『〇〇で始まり▲▲で終わる』文字列などを自由に抽出することが出来ます。
このワイルドカードは、”*(アスタリスク)”や”?(疑問符)”が代表的なものです。
使い方を理解しておくと、検索だけでなく置換やIF関数やフィルター、COUNTIF関数など利用する時に便利です。
都道府県リストの中から3文字の県だけを検索したいんだけど・・・
”???県”で検索すれば可能だよ。2文字の県なら、”??県”で検索だね
ワイルドカードとは?
Excelには検索条件を指定する関数が複数ありますよね。
SUMIF関数、COUNTIF関数、AVERAGEIF関数など・・・・
そんな関数を「〇〇を含む文字列」のような条件で検索したいときにワイルドカード文字を使用します。
このワイルドカード文字とは、トランプのジョーカーがあらゆる札の代用に出来るのと同様に、ワイルドカード文字はあらゆる文字の代用として指定出来ます。
Excelのワイルドカードの一覧
エクセルで利用できるワイルドカード文字には下の3つがあります。
”*(アスタリスク)”と”?(疑問符)”の2つが良く利用されるので、上の2つの使い方を覚えましょう。
ワイルドカード文字 | 説明 |
*(アスタリスク) | 0文字以上の任意の文字列 |
?(疑問符) | 任意の1文字 |
~(チルダ) | 次に続くワールドカード文字を文字として扱う |
ワイルドカードの使い方
ワイルドカードをどのように使うか具体的に説明します。
*(アスタリスク)の使い方
「*(アスタリスク)」は、0文字以上の任意の文字列を表します。
そのため、「*県」と使うと、「0文字以上の文字列+県」という意味なので、「県で終わる文字列」という意味になります。
「*(アスタリスク)」を末尾につけて「県*」と使うと、「県+0文字以上の文字列」という意味なので、「県で始まる文字列」という意味になります。
例えば、『県、近県、兵庫県、神奈川県、県境、県立、県議会』の7つの文字列から「*(アスタリスク)」を使って検索した場合、検索でヒットする文字は以下のようになります。
使用例 | 意味 | 検索でヒットする文字列 |
*県 | 「県」で終わる文字列 | 県、近県、兵庫県、神奈川県 |
県* | 「県」で始まる文字列 | 県、県境、県立、県議会 |
*県* | 「県」を含む文字列 | 県、近県、兵庫県、神奈川県 県境、県立、県議会 |
?(疑問符)の使い方
「?(疑問符)」は、任意の1文字を表します。
「??県」と使うと、「任意の1文字+任意の1文字+県」という意味なので、「任意の2文字+県」となります。
例えば、『県、近県、兵庫県、神奈川県、県境、県立、県議会』の7つの文字列から「?(疑問符)」を使って検索した場合、検索でヒットする文字は以下のようになります。
使用例 | 意味 | 検索でヒットするデータ |
??県 | 2文字+「県」の文字列 | 兵庫県 |
県? | 「県」+1文字の文字列 | 県境、県立 |
ワイルドカードが使える機能や関数は?
さきほどは『検索』を例に”*”と”?”の使い方を説明しましたが、それ以外にも『置換』や『フィルター』や以下の関数の検索値としても利用出来ます。
『検索』『置換』『フィルター』『SUMIF関数』『COUNTIF関数』『SEARCH関数』『MATCH関数』『HLOOKUP関数』『VLOOKUP関数』『XLOOKUP関数』『SUMIFS関数』『AVERAGEIF関数』『COUNTIFS関数』『AVERAGEIFS関数』・・
特に実用性が高い『検索』『置換』『フィルター』『COUNTIF関数』『SUMIF関数』の5つの使用例を下の見出しで紹介しますので参考にしてください。
ワイルドカードを利用する方法
ワイルドカードを具体的に関数や各機能で利用する方法を紹介します。
『検索』で利用する
「検索」機能を利用する時にワイルドカードを利用すると、求めている検索値を見つけやすくなるので便利です。
”*(アスタリスク)”と”?(疑問符)”で利用する方法を紹介します。
「検索」機能は、「Ctrl+F」キーのショートカットキーで表示するか、「ホーム」タブの「検索と選択」から利用することが出来ます。
”?(疑問符)”の使用例
”A”を含む4桁のコード表から、2桁目がAのコードだけを検索したい場合は、検索する文字列に「?A??」と設定すると、表から「AA33」だけが検索されます。
検索する文字列:「?A??」
”*(アスタリスク)”の使用例
”A”を含む4桁のコード表から、Aで終わるコードだけを検索したい場合は、検索する文字列に「*A」を入力して検索することが出来ます。
検索する文字列:「*A」
検索する時は、Aを含む全てのコードが検索されてしまわないように、「セル内容が完全に同一であるものを検索する」にチェックを入れてください。
検索が上手く出来ない場合は、以下の記事も参考にしてみて下さい。
『置換』で利用する
「置換」機能をワイルドカードと組み合わせて利用すると、特定の文字の前後で文字列を分解することが出来ます。
”商品@単価”列を、”商品”列と”単価”列で1列ずつに分ける手順を解説します。
手順1.文字列を隣の列にコピペ
横の空いた列に、書式含めて文字列をコピペします。
手順2.「置換」機能を利用
左側の列のセル範囲を選択してから、「Ctrl+H」キーの置換のショートカットキーを使って、「検索と置換」画面を表示します。「ホーム」タブの「検索と選択」ボタンからでも表示することが出来ます。
手順3.「置換」する条件を設定
検索する文字列を「@*」、置換後の文字列を未入力のままにして「すべてを置換」をクリックします。
手順4.置換結果を確認
置換によって1列目の文字列から、「@」以降の文字列が削除することが出来ます。
手順5.「置換」機能を利用
今度は右側の列のセル範囲を選択してから、「Ctrl+H」キーの置換のショートカットキーを使って、「検索と置換」画面を表示します。
手順6.「置換」する条件を設定
検索する文字列を「*@」、置換後の文字列を未入力のままにして「すべてを置換」をクリックします。
手順7.置換結果を確認
置換によって2列目の文字列から、「@」より前の文字列が削除することが出来ます。
手順8.結果を確認
以上の作業により表を商品名と単価に分けることが出来ました。
『フィルター』で利用する
「フィルター」機能でワイルドカードを利用すると、求めている検索値が見つけやすくなります。
”*(アスタリスク)”と”?(疑問符)”の使用例を1つずつ紹介します。
「フィルター」機能は、列を選択した後に、「Shift+Ctrl+L」キーのショートカットキーで設定するか、「ホーム」タブの「並べ替えとフィルタ」ボタンから設定することが出来ます。
フィルターの使い方は以下の記事を参考にしてみてください。
”*(アスタリスク)”の使用例
Aを含むコード表から、末尾がA”のコードだけをフィルターで抽出したい場合は、テキストフィルターにアスタリスクを使って「*A」と入力します。
テキストフィルター:「*A」
そうすると下の図のように、末尾が『A』の文字列だけを抽出することが出来ます。
”?(疑問符)”の使用例
Aを含むコード表から、Aの後に2文字続くコードだけを検索したい場合は、テキストフィルターに疑問符を使って「A??」と入力します。
テキストフィルター:「A??」
そうすると下の図のように、『A』の後に2文字続く文字列だけを抽出することが出来ます。
『COUNTIF関数』で利用する
COUNTIF関数でワイルドカードを利用すると、『~を含む』条件で対象の文字列をカウントすることが出来ます。
COUNTIF関数とワイルドカードの組み合わせは非常に相性が良く使いやすいです。
COUNTIF関数×ワイルドカードの使用例として下のコード表を使って3つの使用例を紹介します。
?(疑問符)”の使用例
コード表から、「-(ハイフン)の後が1桁のコード」の数をカウントする場合は、検索条件の引数を「”*-?”」と設定することでカウントすることが可能です。
=COUNTIF($B$3:$B$8,"*-?")
ワイルドカードを"(ダブルクォーテーション)で囲っているのは、引数が文字列として認識させるための設定です。
”*(アスタリスク)”の使用例
コード表から、「-(ハイフン)の後が1のコード」の数をカウントする場合は、検索条件の引数を「”*-1”」とすることでカウントすることが可能です。
=COUNTIF($B$3:$B$8,"*-1")
セル参照の使用例
COUNTIF関数の2つ目の引数「検索条件」に、直接値を入れずにセル参照することでも利用することが出来ます。
引数に、「"*"&D7」と入力することでセル参照と文字列を組み合わせて、COUNTIF関数を利用することが可能です。
=COUNTIF($B$3:$B$8,"*"&D7)
検索条件をセル参照で利用したい場合は、下の表を参考に検索条件を作成してください。
セル番号を使う場合は、セル番号の前後に「&」を付けるのがポイントです。
条件 | 検索条件の形 | 計算式の例 |
含む | "*"&セル番号&"*" | =COUNTIF(B3:B8,"*"&D7&"*") |
から始まる | セル番号&"*" | =COUNTIF(B3:B8, D7&"*") |
で終わる | "*"&セル番号 | =COUNTIF(B3:B8,"*"&D7) |
前後に1文字ずつ | "?"&セル番号&"?" | =COUNTIF(B3:B8,"?"&D7&"?") |
後に1文字 | セル番号&"?" | =COUNTIF(B3:B8, D7&"?") |
前に1文字 | "?"&セル番号 | =COUNTIF(B3:B8,"?"&D7) |
含まない | "<>*"&セル番号&"*" | =COUNTIF(B3:B8,"<>*"&D7&"*") |
から始まらない | "<>"&セル番号&"*" | =COUNTIF(B3:B8,"<>"&D7&"*") |
で終わらない | "<>*"&セル番号 | =COUNTIF(B3:B8,"<>*"&D7) |
前後に1文字ずつ以外 | "<>?"&セル番号&"?" | =COUNTIF(B3:B8,">?"&D7&"?") |
後に1文字以外 | "<>"&セル番号&"?" | =COUNTIF(B3:B8,"<>"&D7&"?") |
前に1文字以外 | "<>?"&セル番号 | =COUNTIF(B3:B8,"<>?"&D7) |
COUNTIF関数はエクセルの定番関数で用途も様々です。下の2つの記事でCOUNTIF関数とCOUNTIFS関数の条件の設定方法を詳しく紹介していますので合わせて参考にしてみて下さい。
『SUMIF関数』で利用する
SUMIF関数もCOUNTIF関数と同様にワイルドカードを利用出来ます。
下の表から「北」を含む販売地域の数量の合計をSUMIF関数で計算します。
=SUMIF(D3:D12,"*北*",F3:F12)
SUMIF関数の便利な使い方の中を以下の記事でも紹介していますので、合わせて参考にしてください。
ワイルドカードが使えない場合
IF関数はワイルドカードが使えない特殊な関数です。
下の図のように、販売区域名に「北」という文字が含まれるセルを”○”と判定するために、下のIF関数を挿入しても、全ての判定が”×”となってしまいます。
=IF(D3="北","○","×")