• ベストアンサー

VLOOKUP関数で2シート分検索したい

1つのデータに2つシートがあり、 両方のシートで該当する値がないかを確認したいのですが どのようにしたら上手くできるのでしょうか? 「現在のシートで検索対象値がなく、Bのシートでも検索対象値がなかったら何も入力しない」 というイメージです。 ↓イメージを形にすると下記のようになるかと思ったのですが 「0」という数字がかえってきてしまいます。 =IFERROR(OR(VLOOKUP(E2,E:F,2,0),VLOOKUP(E2,B'!E:F,2,0)),"") 関数を修正、もしくは別方法があるのでしたら教えていただけないでしょうか。 どうぞ宜しくお願い申し上げます。

質問者が選んだベストアンサー

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

やること: 1.検索値を現在のシートのE:F列から探す   有ればF列の値を取ってくる 2.無ければBシートのE:F列から探す   有ればBシートのF列を取ってくる 3.Bシートにも無ければ””にする ここで最初の1の「検索値」が「E2」では,まったくお話になりません。それじゃF2を取ってきて終わりです。 一応数式はこうなります。 =IFERROR(VLOOKUP(検索値,E:F,2,FALSE),IFERROR(VLOOKUP(検索値,B!E:F,2,FALSE),"")) #補足 多分あなたの本当のシート名は「B」じゃないんでしょう,変に間違った’とかが,あなたの数式には書き込まれてます。

piropiro24
質問者

お礼

早速ありがとうございました、またこちらが言い表したい内容をわかりやすくしていただき助かります。 仰る通りシート名はBではないのでシートらしき箇所を修正してご相談していました。 もう一度教えていただいた式で確認してみます、ありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.4

E2 の有無を E:F という範囲で確認するという理屈は変だよという指摘は、No.1 さんと No.3 さんがおっしゃっているとおりです。ないわけがないですものね。(E2 がエラー値といった特殊な状況を除きます) 他に、残念ながら根本的に違っちゃってるな~という点を下に書きますね。よかったら今後の研究のご参考になさってください。 (1) IFERROR 関数と OR では、組み合わせがよろしくありません。理由は次のとおり。 IFERROR は、ある数式がエラーになるのかならないのかを判定する関数ですね。ある条件下ではエラーになることを期待しているわけです。 OR は、複数の等式や不等式の中に、真となるものが 1 つでも含まれていれば TRUE を、そうでなければ FALSE を返す関数。数値の 1 か 0 に相当します。つまりエラーを返すことは想定されていない関数ということになります。 OR の中身の数式がエラーとなる場合は全体もエラーにはなるのですが、それは OR が使われていなくても、元々エラーなわけです。OR がエラーにしたわけではありません。 ですから IFERROR で判定しようとするなら、OR に登場してもらう必要は全然ないということです。No.1 さんのように IF との組み合わせなら、OR も考えられます。 (2) OR の中身には、複数の等式や不等式を書きます。ですから VLOOKUP ではなく VLOOKUP>1 とか VLOOKUP="あ" などになっていないと、あまり意味を成しません。 OR(VLOOKUP,VLOOKUP,...,VLOOKUP) といった数式で、全ての VLOOKUP が数値を返すというケースでは意味がある可能性もありますが、そんなトリビアよりも、まずは OR の基本的な使い方からマスターしましょう。

piropiro24
質問者

お礼

関数について説明していただきありがとうございます。 すみません、そこまで深く理解していませんでした… これを機にOR関数勉強します。 アドバイスありがとうございました。

すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

次のような式にします。 =IFERROR(VLOOKUP(E2,E:F,2,0),"") & IFERROR(VLOOKUP(E2,B'!E:F,2,0),"")

piropiro24
質問者

お礼

早速ありがとうございます。 &で関数をつなげることもできるのですね、勉強になります! ありがとうございました!

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! >現在のシートで検索対象値がなく、Bのシートでも検索対象値がなかったら何も入力しない とありますが、 >VLOOKUP(E2,E:F,2,0) の部分を見ると検索値がVLOOKUP関数の範囲内になりますので、「現在のシート」に検索対象がない! というコトはあり得ないコトになってしまいます。 まぁ~その辺は深く考えず、オーソドックスに =IF(OR(COUNTIF(E:E,検索値)=0,COUNTIF(B!E:E,検索値)=0),"","計算式") といった感じにしてみてはどうでしょうか?m(_ _)m

piropiro24
質問者

お礼

早速ありがとうございました、また説明が足らず申し訳ありません。 E列に新しい情報を入力していくので 同じ頁のE列で既に入力があればそこから検索値を出してほしい、 なければ別シートのE列で既に入力があればそこから検索値を出してほしい という意図で作成いたしました。スタートなのでE2としていますが 実際にはE125等になります。 関数も簡潔にと思ったら逆に変な相談になってしまいました、すみません。 アドバイスありがとうございます!

すると、全ての回答が全文表示されます。

関連するQ&A