プロが教える店舗&オフィスのセキュリティ対策術

指定したセルと等しい数値(文字列?)を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)))

ご指摘いただければ嬉しいです。

A 回答 (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] で確定、配列数式。{ }で挟まれる
    • good
    • 0

二つのシートで調べるのでしたら次のような関数にしてはどうでしょう。


例えばシート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),"データが見つかりません")))
    • good
    • 0

とりあえず間違いの修正:


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)))
みたいに使えます。
    • good
    • 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)))
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!