No.013
VLOOKUP関数で、複数テーブルから検索したい 《VLOOKUP・アンパサンド》
2003/2007/2010/2013
VLOOKUP関数(関数の分類: 検索/行列)でデータを照合するときに、複数の範囲(テーブル)から見て照合したいというお問い合わせです。
VLOOKUP関数の引数[範囲]には、複数範囲を指定することはできません。ではどうするればよいか。
今回は2つのVLOOKUP関数で求め、アンパサンド(&)を使用して答えをつなげます。
式の構成は次のようなイメージです。
=VLOOKUP(その1) & VLOOKUP(その2)
しかし、次の点を考える必要があります。
- VLOOKUP関数一方または両方でエラーが出た場合
- VLOOKUP関数両方で返された場合
では、上の式に少し加えていきましょう。
<一方または両方でエラーが出た場合>
一方または両方でエラーが出た場合の対処をしてみます。
IFERROR関数(関数の分類: 論理)を使用し、エラーの場合は空白で返すようにします。
=IFERROR(VLOOKUP(その1),"") & IFERROR(VLOOKUP(その2),"")
これで、VLOOKUP関数でエラーが返されても空白になりますので、両方でエラーとなった場合も空白が答えとなります。
<両方で返された場合>
では、VLOOKUP関数両方で何らかの答えが返されたらどうしましょう。
例えば上図で、検索値を「a」とした場合、どちらの範囲にも「a」がありますので、式の答えは「ああ」となってしまいます。
その場合、複数のVLOOKUP関数のうち優先を決めて、優先順にVLOOKUP関数をつなげます。
そして、IF関数(関数の分類: 論理)などを使って条件分岐するしかないですね。
例えば、次のような式で求めることができます。
=IFERROR(VLOOKUP(その1),"") &
IF(ISERROR(VLOOKUP(その1)),IFERROR(VLOOKUP(その2),""),"")
1つ目のVLOOKUP関数は先と同じ、2つ目のVLOOKUP関数は条件分岐です。
条件にISERROR関数(関数の分類: 論理)を使用し、VLOOKUP関数その1がエラーであれば、VLOOKUP関数その2で答えを求め、その1がエラーでなければ空白で返しています。
Excel2003では、IFERROR関数がまだ存在していないため、IFERROR関数のところをISERROR関数で処理します。
するとエラーを回避した式は、次のようになります。
=IF(ISERROR(VLOOKUP(その1)),"",VLOOKUP(その1)) &
IF(ISERROR(VLOOKUP(その2)),"",VLOOKUP(その2))
ヘルプmemo
<ISERROR関数>
セルの内容がエラー値の場合に TRUE を返します。
数式: =ISERROR(テストの対象)
引数:
テストの対象 …テストするデータを指定
ヒント:
エラー値の場合はTRUE、エラー値でない場合はFALSEで返します。