• ベストアンサー

エクセル 複数条件でのLOOKUP

エクセルで、特定のキーで別表を参照してそこから値を表示するにはVLOOKUPを使用すると思いますが、複数条件でLOOKUPする事は可能でしょうか。 例えば、 シート1のA列とD列 シート2のB列とF列  2つの条件に合う(シート1A列=シート2B列 and シート1D列=シート2F列)レコードをシート2のG列からシート1のE列に表示したいと言う場合です。  シート1   A B C D E           1 01 ** ** 01       2 01 ** ** 02 うう       3 05 ** ** 01 ああ          ↑  シート2   A B C D E F G          1 ** 08 ** ** ** 01 いい       2 ** 01 ** ** ** 02 うう       3 ** 05 ** ** ** 01 ああ 判りにくい説明で申し訳ありませんが、よろしくお願いいたします。

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

  • ベストアンサー
noname#79209
noname#79209
回答No.4

#3です。 書いているうちに、#2さんが提案されていましたね。 ただ、見つからなかったときにエラーが出ますので、 =IF(COUNTIF(Sheet2!$G$1:$G$1000,$A1&$D1)>0,VLOOKUP($A1&$D,Sheet2!$G$1:$H$1000,2,FALSE),"") のほうが良いでしょう。 ただ、VLOOKUPは最初に見つかった時点で検索を終了しますので、 同じものが複数行あったときはどうするかですね。 これはキメの問題ですが...

ogaki_3ok
質問者

お礼

ありがとうございました。 何とかこの方法で処理できました。

その他の回答 (3)

noname#79209
noname#79209
回答No.3

> シート1A列=シート2B列 and シート1D列=シート2F列 ということは、言い換えれば、 「シート1A列とD列の値がそれぞれ、シート2B列とF列で同じものを探す」 と考えてよいですよね。 もし、シート2にワーク列を設けて良いなら、 シート2のF列とG列の間に列を挿入して、 =$B1&$F1 として、下にコピーしておき、 シート1のE列に =VLOOKUP($A1&$D,Sheet2!$G$1:$H$1000,2,FALSE) というのはダメですか? 要は、シート2に検索のキーになる列をあらかじめ作っておくのです。 キー列の表示が煩わしければ、列幅をゼロにすれば良いでしょう。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

一例ですが... E1=INDEX(Sheet2!G$1:G$3,SUMPRODUCT(MIN(100^((Sheet2!B$1:B$3<>A1)+(Sheet2!F$1:F$3<>D1))*ROW(Sheet2!G$1:G$3))),1) ※MINの後の数値(100)はSheet2のデータの最終行より大きい数値にしてください。 本当は、Sheet2で =B1&G1 のようにして 0801 いい のような表にして E1=VLOOKUP(A1&D1,Sheet2!G$1:H$3,2,FALSE) の方が簡単ですけどね。

ogaki_3ok
質問者

お礼

ありがとうございました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 =IF(SUMPRODUCT((Sheet2!$B$1:$B$100=A1)*(Sheet2!$F$1:$F$100=D1)),INDEX(Sheet2!G:G,SUMPRODUCT((Sheet2!$B$1:$B$100=A1)*(Sheet2!$F$1:$F$100=D1)*(ROW(Sheet2!$A$1:$A$100)))),"")

関連するQ&A