今回は、MATCHの答えを「位置」ではなく、「検索値」で返す方法の紹介です。
検索値があれば、その検索値で返すというのは、VLOOKUPと似ていますね。通常、MATCHで検索値があれば、その位置を答えとして返します。しかし、VLOOKUPに改造すると、2点のメリットが得られます。
- 検索キーの左右にかかわらず、VlOOKUPが可能
- MATCHでワイルドカード検索をしたときに、検索値を返してもらえると、手間が省ける
.png?w=728&ssl=1)
ワイルドカード検索ってなんだっけ?

曖昧検索のことよ。
例えば、「山」が入るのは確かでも、苗字を忘れてリストから調べたいときなんかに便利なのよ。以下の例題を使って、今回の意図をつかみましょう。
例題
「山」が含まれる名前を、C列中から探したいとき、どうする?

答え
G2 = MATCH(“*山*”,C1:C,0))

1. G2を選択し、=MATCH()を入力。
2. 検索値は、*山*(山が含まれる)を指定
3. 検索範囲は、C1:C(C1以下のC列全て)を指定。
4. 検索方法は、条件に完全一致するセルの位置を求めるので、0。
.png?w=728&ssl=1)
へぇ。C列中で「山」が入る名前の列番号を答えにするのか。

そう!その列番を教えくれるっていうのが不便ところで、だって、知りたいのってその名前自体じゃない?
.png?w=728&ssl=1)
まぁ、名前忘れたなら早く知りたいもんね…

ということで、MATCHの答えを「位置」ではなくて、「検索値」で返す方法をみていきましょう。
ワイルドカード(*)とMATCHに関しては以下を参考にしてくださいね!
意味 | 方法 | 例 | 備考 |
---|---|---|---|
「山」を含む | *山* | 山,山口,三鷹山 | 山が含まればなんでもOK |
「山」で始まる | 山* | 山,山口,山形県民 | 山から始まるのだけ! |
「山」で終わる | *山 | 山,大山,富士山 | 山で終わるのだけ! |
Step # 1:MATCHの答え方を位置ではなく、名前にする方法
式のつくりかた
以下の式を、G2セルに入力します。
=INDIRECT(“C”&MATCH(“*山*”,C1:C,0))

式の解説
まず後半の部分に関してですが、
=INDIRECT(“C”&MATCH(“*山*”,C1:C,0))
はじめの例題と一緒ですね。山を含む名前がある列の番号を返します。
次に前半の部分に関してですが、
=INDIRECT(“C”&MATCH(“*山*”,C1:C,0))
INDIRECTは、続くカッコ内のセル番号を参照します。今回であれば CとMATCH関数の答えを合わせたセル番号を参照します。一方、「“_”」の有無によって、取得方法が変わる点に要注意です。

MATCH(“*山*”,C1:C,0)は「“_”」なしよね。これは効力有り参照を意味するの。つまり、式は動作した後に参照されるから、答えの列番号が参照されるの。でも、”C”みたいに「“_”」があると、ただの文字としてそれを参照するわ。
.png?w=728&ssl=1)
じゃあ結論「C&列番号」ってこと?

そう!
INDIRECT(“C”&MATCH(“*山*”,C1:C,0)) = C3(= 山口 百香)よ。
INDIRECT(“C”&MATCH(“*山*”,C1:C,0)) = C3(= 山口 百香)よ。
これで、MATCHの答え方を位置ではなく、名前にする方法の完成です。
また、この方法によって、MATCHをVLOOKUPのように使うことが可能です!今回は「C」とMATCHをくっつけて参照していますが、これをBやDにすることで、別の列の情報を参照することができますね。
INDIRECT, VLOOKUPに関しては、以下の記事をどうぞ!