- 締切済み
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))) ご指摘いただければ嬉しいです。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
根本的にこのようなシートのつくりは避けたほうが良いと思う。 エラー処理なし、シート名は「シート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)
二つのシートで調べるのでしたら次のような関数にしてはどうでしょう。 例えばシート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)
とりあえず間違いの修正: 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)
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)))