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,
MATCH("木*",$B$4:$B$8,0),2)

「木」で終わる 文字列の前に* "*木"

=INDEX($A$4:$E$8,
MATCH("*木",$B$4:$B$8,0),2)

「木」の前後に
1文字ずつある
文字列の前後に? "?木?"

=INDEX($A$4:$E$8,
MATCH("?木?",$B$4:$B$8,0),2)

「木」の後に
1文字ある
文字列の後に? "木?"

=INDEX($A$4:$E$8,
MATCH("木?",$B$4:$B$8,0),2)

「木」の前に
1文字ある
文字列の前に? "?木"

=INDEX($A$4:$E$8,
MATCH("?木",$B$4:$B$8,0),2)

 

一つ例を見てみましょう。

名前に「『木』を含む」という条件にしたい場合、数式は次のようになります。

=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本の紹介】


Top