- ベストアンサー
エクセル関数
エクセル関数 エクセルのVLOOK関数で Sheet1のB2、C2,D2と、Sheet2のB2,C2,D2が同じ値であった場合,sheet2のE2の値をSheet1のE2に入れたい場合どのような式を書けばいいのでしょうか? 何度もやってみたのですが、うまくいかず教えてほしいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
なぜ、VLOOKUP関数なのかが分かりません。 質問文の要件だけなら↓で出来ます。 =IF(AND(B2=Sheet2!B2,Sheet1!C2=Sheet2!C2,Sheet1!D2=Sheet2!D2),Sheet2!E2,"") VLOOKUPでどうしたいのか分かりませんが、条件は一つしか認識できないので、AND関数等で対応してみてはいかがでしょうか。
その他の回答 (3)
- tonic_tonic
- ベストアンサー率34% (142/410)
No.1の方の回答で良いと思います。 あまり難しい回答は必要ないかと!
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 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))))
- keithin
- ベストアンサー率66% (5278/7941)
【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のセル範囲を無闇に広げると,途端にエクセルの計算が遅くなって実用に耐えなくなります。また見慣れない式なので,サンプルをよく見ながら気を付けて作成しないとすぐエラーになります。