• 締切済み

IF関数とLOOKUP関数の組み合わせについて

指定したセルと等しい数値(文字列?)をLOOKUP関数を使って別シートのデータベースを検索させて、そのシートに無ければまた別のシートのデータベースを検索させるものを作りたいのですが上手くいきません。 指定したセルが空白なら空白を返すように次のような感じで作っています。 IF(A1="","",IF(LOOKUP(A1,シート1!A1:A15,A1:A15)<>A1,LOOKUP(A1,シート2!A1:A15,B1:B15),LOOKUP(A1,シート1!A1:A15,B1:B15))) VLOOKUP関数でもやってみたのですがこちらも上手くいきません。 IF(A1="","",IF(LOOKUP(A1,シート1!A1:A15,A1:A15)<>A1,VLOOKUP(A1,シート2!A1:B15,2,0),VLOOKUP(A1,シート1!A1:B15,2,0))) ご指摘いただければ嬉しいです。

みんなの回答

回答No.4

根本的にこのようなシートのつくりは避けたほうが良いと思う。 エラー処理なし、シート名は「シート1」~「シート5」 までの連番 A2セルが文字列 =VLOOKUP(A2,INDIRECT("シート"&MIN(IF(A2=T(INDIRECT("シート"&COLUMN($A$1:$E$1) &"!A"&ROW($A$1:$A$15))),COLUMN($A$1:$E$1)))&"!A1:B15"),2,0) [Ctrl]+[Shft] +[Enter] で確定、配列数式。{ }で挟まれる A2セルが数値 =VLOOKUP(A2,INDIRECT("シート"&MIN(IF(A2=N(INDIRECT("シート"&COLUMN($A$1:$E$1) &"!A"&ROW($A$1:$A$15))),COLUMN($A$1:$E$1)))&"!A1:B15"),2,0) [Ctrl]+[Shft] +[Enter] で確定、配列数式。{ }で挟まれる

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

二つのシートで調べるのでしたら次のような関数にしてはどうでしょう。 例えばシート3でシート1やシート2のA列を検索してB列のデータを表示させるとしたら次のような式になりますね。 =IF(A1="","",IF(COUNTIF(Sheet1!A:A,A1)>0,VLOOKUP(A1,Sheet1!A:B,2,0),IF(COUNTIF(Sheet2!A:A,A1)>0,VLOOKUP(A1,Sheet2!A:B,2,0),"データが見つかりません")))

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

とりあえず間違いの修正: IF(A1="","",IF(LOOKUP(A1,シート1!A1:A15,シート1!A1:A15)<>A1,LOOKUP(A1,シート2!A1:A15,シート2!B1:B15),LOOKUP(A1,シート1!A1:A15,シート1!B1:B15))) こちらの方が確実: =IF(A1="","",VLOOKUP(A1,IF(COUNTIF(Sheet1!A1:A15,A1),Sheet1!A1:B15,Sheet2!A1:B15),2,FALSE)) #補足 LOOKUP関数は各A列が「必ず」エクセル的な昇順に並べ変わっていないと使用できません。 確かに間違いなく昇順にしてあるなら、VLOOKUP関数の方も =IF(A1="","",IF(ISERROR(MATCH(A1,Sheet1!A1:A15)),VLOOKUP(A1,Sheet2!A1:B15,2),VLOOKUP(A1,Sheet1!A1:B15,2))) みたいに使えます。

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

LOOKUP関数の検索結果が存在しない場合はエラーになるので、 ISNA関数を使ってエラーかどうかで判断してはどうでしょうか =IF(A1="","",IF(ISNA(LOOKUP(A1,シート1!A1:A15,A1:A15)),LOOKUP(A1,シート2!A1:A15,B1:B15),LOOKUP(A1,シート1!A1:A15,B1:B15)))

関連するQ&A