みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル関数

エクセル関数

エクセルのVLOOK関数で
Sheet1のB2、C2,D2と、Sheet2のB2,C2,D2が同じ値であった場合,sheet2のE2の値をSheet1のE2に入れたい場合どのような式を書けばいいのでしょうか?

何度もやってみたのですが、うまくいかず教えてほしいです。

投稿日時 - 2010-05-18 17:21:45

QNo.5904084

すぐに回答ほしいです

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

なぜ、VLOOKUP関数なのかが分かりません。

質問文の要件だけなら↓で出来ます。
=IF(AND(B2=Sheet2!B2,Sheet1!C2=Sheet2!C2,Sheet1!D2=Sheet2!D2),Sheet2!E2,"")

VLOOKUPでどうしたいのか分かりませんが、条件は一つしか認識できないので、AND関数等で対応してみてはいかがでしょうか。

投稿日時 - 2010-05-18 17:41:05

このQ&Aは役に立ちましたか?

9人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

No.1の方の回答で良いと思います。
あまり難しい回答は必要ないかと!

投稿日時 - 2010-05-18 23:50:49

ANo.3

一例です。
VLOOKUPでは複数条件の抽出できませんので。INDEXとSUMPRODUCTの組み合わせです。
=INDEX(Sheet2!$E:$E,SUMPRODUCT((Sheet2!$B$2:$B$4=B2)*(Sheet2!$C$2:$C$4=C2)*(Sheet2!$D$2:$D$4=D2)*(ROW(Sheet2!$A$2:$A$4))))

投稿日時 - 2010-05-18 19:00:05

ANo.2

【VLOOKUP関数の使い方のお話】

シート2のA列,A2セルに
=B2&"_"&C2&"_"&D2
という式を入れて下向けにずらりコピーしておき
シート1では
=VLOOKUP(B2&"_"&C2&"_"&D2,Sheet2!A:E,5,FALSE)
あるいは
=IF(COUNTIF(Sheet2!A:A,B2&"_"&C2&"_"&D2),VLOOKUP(B2&"_"&C2&"_"&D2,Sheet2!A:E,5,FALSE),"")
などのようにしてVLOOKUP関数を使います。
このように,VLOOKUP関数の検索値は必ず1つしか出来ません。

シート2のA列が既に使われているというなら,空列をA列に挿入して全体を1列右にスライドしても出来ますし,E列に空列を挿入して今のE列をF列にスライドして,空けたE列にBCD列を一つのデータにする式を埋めても出来ます。



【それ以外のやり方のお話】
上述したようにA列やE列に空列を挿入して表のレイアウトを変更することが,何を置いても耐え難く絶対に認められないという場合。
○B&C&Dの列を目的値のE列よりもずっと右で空いた列,例えばM列とかに作成し,
 =INDEX(Sheet2!E:E,MATCH(B2&"_"&C2&"_"&D2,Sheet2!M:M,0))
 のような別の関数の組み合わせを利用する事も出来ます。

○シート1がB2とC2とD2しかなければ,DGET関数などを使う事も出来ます。

○E列が数値の時,更にExcel2007以降を利用して,SUMIFS関数でも出来ます。

●お奨めではありませんが
 =IF(SUMPRODUCT((B2=Sheet2!$B$2:$B$100)*(C2=Sheet2!$C$2:$C$100)*(D2=Sheet2!$D$2:$D$100)),INDEX(Sheet2!E:E,SUMPRODUCT((B2=Sheet2!$B$2:$B$100)*(C2=Sheet2!$C$2:$C$100)*(D2=Sheet2!$D$2:$D$100)*ROW(Sheet2!$E$2:$E$100))),"")
 のような方法もあります。ちょっと試してみるだけなら構いませんが,この数式を沢山コピーして使おうとしたり,対象のシート2のセル範囲を無闇に広げると,途端にエクセルの計算が遅くなって実用に耐えなくなります。また見慣れない式なので,サンプルをよく見ながら気を付けて作成しないとすぐエラーになります。

投稿日時 - 2010-05-18 18:45:44

あなたにオススメの質問