INDEX+MATCH関数で含む条件にする方法|ワイルドカード
ここでは、INDEX+MATCH関数で部分一致(含む)条件を指定する方法を解説します。
部分一致には「ワイルドカード」と呼ばれる記号を使います。
その使い方の説明です。
1.部分一致条件の鍵は「ワイルドカード」
始めに、「部分一致(含む)条件」とはなにか、そして部分一致条件で使う記号「ワイルドカード」とはどのようなものかから見てみましょう。
1-1.部分一致(含む)条件とは
「部分一致条件」とは、「指定した文字列が含まれているかを条件にすること」を言います。
対して、よく使われる検索条件は「完全一致条件」と言います。
まずは、この完全一致条件の場合の例を見てみましょう。
上の表は、社員基本情報が入力されたものです。
例えば、この表から「勤務形態が常勤(で一番上)の人」の名前を抜き出す場合、MATCH関数の検査値は「"常勤"」となります。
この場合、当然ではありますが、検査対象の値が「常勤」でないと一致にはなりません。
「常勤」という文字が含まれていても、例えば「非常勤」だとダメと判定されます。
これが「完全一致条件」です。
これに対して、例えば「名前に『木』が含まれているか?」というのが、部分一致条件です。
先ほどと同じ社員基本情報一覧表で、「名前に『木』が含まれている人」の名前を抜き出す場合、MATCH関数の検査値は「"*木*"」となります。
そして、この時使われる「*」が「ワイルドカード」と呼ばれる記号です。
1-2.ワイルドカードとは
部分一致条件に使うワイルドカードには、次の2種類があります。
種類 | 特徴 |
*(アスタリスク) | 文字数を指定しない時に使う |
?(クエスチョン) | 文字数を指定したい時に使う |
この2つの違いは「文字数を指定するか?」です。
指定する場合には「?」を、指定しない場合には「*」を使います。
なお、詳しい使い方はこの後説明します。
2.「特定の文字を含む」条件の作り方
次に、INDEX+MATCH関数にワイルドカードを使った、部分一致条件の数式の作り方を説明します。
条件値の書き方は、条件値を「数式に直接入力」するか、「セル参照」するかで違ってきますので、それぞれみてみます。
例では、先ほどの「社員基本情報一覧表」を使います。
条件は「氏名に『木』があるか?」を、様々な形で作ってみます。
2-1.条件値を数式に直接入力する場合
条件値を数式に直接入力する場合のポイントは「条件値に『*』や『?』を付けて『"』で囲む」です。
条件に応じた「*」や「?」の付け方は、次の通りです。
条件の形 |
入力の仕方 |
入力例 |
数式の例 |
「木」を含む | 文字列の前後に* | "*木*" |
=INDEX($A$4:$E$8, MATCH("*木*",$B$4:$B$8,0),2) |
「木」から始まる | 文字列の後に* | "木*" |
=INDEX($A$4:$E$8, |
「木」で終わる | 文字列の前に* | "*木" |
=INDEX($A$4:$E$8, |
「木」の前後に 1文字ずつある |
文字列の前後に? | "?木?" |
=INDEX($A$4:$E$8, |
「木」の後に 1文字ある |
文字列の後に? | "木?" |
=INDEX($A$4:$E$8, |
「木」の前に 1文字ある |
文字列の前に? | "?木" |
=INDEX($A$4:$E$8, |
一つ例を見てみましょう。
名前に「『木』を含む」という条件にしたい場合、数式は次のようになります。
=INDEX($A$4:$E$8,MATCH("*"&"木"&"*",$B$4:$B$8,0),2)
特に検査値は、
"*"&木&"*"
です。
2-2.条件値をセル参照する方法
条件値をセル参照する場合のポイントは「『"』で囲んだ『*』または『?』とセル番号を『&』でつなげる」です。
条件に応じた「*」や「?」の付け方は、次の通りです。
指定条件 |
指定方法 |
検索条件の例 |
計算式の例 |
セルG3の値 を含む |
セル番号の 前後に&と"*" |
"*"&G3&"*" |
=INDEX($A$4:$E$8, MATCH("*"&G3&"*",$B$4:$B$8,0),2) |
セルG3の値 から始まる |
セル番号の 後に&と"*" |
G3&"*" |
=INDEX($A$4:$E$8, MATCH(G3&"*",$B$4:$B$8,0),2) |
セルG3の値 で終わる |
セル番号の 前に&と"*" |
"*"&G3 |
=INDEX($A$4:$E$8, MATCH("*"&G3,$B$4:$B$8,0),2) |
セルG3の値 の前後に 1文字ずつ |
セル番号の 前後に&と"?" |
"?"&G3&"?" |
=INDEX($A$4:$E$8, MATCH("?"&G3&"?",$B$4:$B$8,0),2) |
セルG3の値 の後に 1文字 |
セル番号の 後に&と"?" |
G3&"?" |
=INDEX($A$4:$E$8, MATCH(G3&"?",$B$4:$B$8,0),2) |
セルG3の値 の前に 1文字 |
セル番号の 前に&と"?" |
"?"&G3 |
=INDEX($A$4:$E$8, MATCH("?"&G3,$B$4:$B$8,0),2) |
こちらも例を見てみましょう。
名前に「『木』を含む」という条件にしたく、「木」がセルG3に入っている場合、数式は次のようになります。
=INDEX($A$4:$E$8,MATCH("*"&"G3"&"*",$B$4:$B$8,0),2)
特に検査値は、
"*"&"G3"&"*"
です。
3.「特定の文字を含まない」条件の作り方
最後に、INDEX+MATCH関数で「特定の文字列を含まない」条件をする方法についてです。
結論から言うと「できません」。
一般的にエクセルで「含まない」条件にする時には「<>」を使いますが、INDEX+MATCH関数の場合にはこの記号を組み合わせても、うまくいきませんでした。
なにか方法があるかもしれませんので、今後も引き続き調査をしてみます。
以上参考になれば幸いです。
次のページでは、INDEX+MATCH関数で複数条件をすべて満たす、AND条件の指定の仕方を解説します。これでたくさん条件があってもINDEX+MATCH関数を使うことができるようになります。
よかったら参照してください。
【口コミ・評判のいいExcel本の紹介】
INDEX+MATCH関数の、他の記事へのリンクはこちらです。
- INDEX+MATCH関数その他の記事へのリンクはこちら