ヘルプの森~Excel・Access・Office全般ヘルプデスクサイト

No.013

アイコン VLOOKUP関数で、複数テーブルから検索したい 《VLOOKUP・アンパサンド》

Excel2003/2007/2010/2013

VLOOKUP関数(関数の分類: 検索/行列)でデータを照合するときに、複数の範囲(テーブル)から見て照合したいというお問い合わせです。
VLOOKUP関数の引数[範囲]には、複数範囲を指定することはできません。ではどうするればよいか。

今回は2つのVLOOKUP関数で求め、アンパサンド(&)を使用して答えをつなげます。
式の構成は次のようなイメージです。

  =VLOOKUP(その1) & VLOOKUP(その2)

しかし、次の点を考える必要があります。

  • VLOOKUP関数一方または両方でエラーが出た場合
  • VLOOKUP関数両方で返された場合

では、上の式に少し加えていきましょう。

<一方または両方でエラーが出た場合>

一方または両方でエラーが出た場合の対処をしてみます。
IFERROR関数(関数の分類: 論理)を使用し、エラーの場合は空白で返すようにします。

  =IFERROR(VLOOKUP(その1),"") & IFERROR(VLOOKUP(その2),"")

これで、VLOOKUP関数でエラーが返されても空白になりますので、両方でエラーとなった場合も空白が答えとなります。

VLOOKUP・IFERROR

<両方で返された場合>

では、VLOOKUP関数両方で何らかの答えが返されたらどうしましょう。
例えば上図で、検索値を「a」とした場合、どちらの範囲にも「a」がありますので、式の答えは「ああ」となってしまいます。

その場合、複数のVLOOKUP関数のうち優先を決めて、優先順にVLOOKUP関数をつなげます。
そして、IF関数(関数の分類: 論理)などを使って条件分岐するしかないですね。
例えば、次のような式で求めることができます。

  =IFERROR(VLOOKUP(その1),"") &
    IF(ISERROR(VLOOKUP(その1)),IFERROR(VLOOKUP(その2),""),"")

VLOOKUP・IFERROR・IF・ISERROR

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で返します。

関連ヘルプ

新規メールが開くハイパーリンクをまとめて設定するには 《HYPERLINK》
設定されているリンクを保ちながら、行と列を入れ替えて表を貼り付けたい 《配列数式/TRANSPOSE》
データに連番をふる、同じデータには同じ番号 《INDEX・MATCH・COUNTIF・MAX》
参照式の参照セルが移動しても固定されるようにしたい 《INDIRECT》
2つのデータを比較し、他方にない(両方にある)データを探す 《VLOOKUP・COUNTIF》
ページのトップへ戻る