• ベストアンサー

エクセル 複数条件での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% (7418/18948)
回答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

  • EXCELでLOOKUPがうまくいきません。

    EXCEL2000です。解説書を見ながら、検索関数のVLOOKUPと LOOKUP関数を比較していたのですが、VLOOKUPだとうまくいくのですが、LOOKUPだと望むべき答えが出ません。D列にC列の値をA1:B4の表から参照するという簡単なものです。 この式で、単純に答え(D欄)が1、2、3、4となるべきだと思うのですが・・以下の具合です。  A B C D 1○ 1 ○ =LOOKUP(C1,$A$1:$A$4,$B$1:$B$4)答4  2× 2 × =LOOKUP(C2,$A$1:$A$4,$B$1:$B$4)答2 3△ 3 △ =LOOKUP(C3,$A$1:$A$4,$B$1:$B$4)答3 4□ 4 □ =LOOKUP(C4,$A$1:$A$4,$B$1:$B$4)答2 どこがおかしいのでしょうか?よろしくご指導ください。

  • エクセルのLOOKUP関数について教えてください。

    エクセルのLOOKUP関数について教えてください。 日にちごとに、AさんからEさんの順位を表示しています。 その表を元に、日にちごとに、1位から5位には誰がなったのかを 表示したいと考えています。 LOOKUP関数を用いて行ったところ、正しい答えとそうでない答えが出てしまいました。 間違った答えがでた箇所(ピンク表示)には、下記のような計算式が入っています。 E15=LOOKUP(E13,$C$4:$G$4,$C$2:$G$2) E16=LOOKUP(E13,$C$5:$G$5,$C$2:$G$2) D17=LOOKUP(D13,$C$6:$G$6,$C$2:$G$2) F18=LOOKUP(F13,$C$7:$G$7,$C$2:$G$2) D19=LOOKUP(D13,$C$8:$G$8,$C$2:$G$2) F19=LOOKUP(F13,$C$8:$G$8,$C$2:$G$2) 調べたところ、LOOKUP関数は昇順になっていないとできないとあったので、 その理由でうまく表示されないのか?とまでは推測がついたのですが、 では、どうしたらいいか?というところで作業がとまっております。 LOOKUP関数以外の関数でも構いませんので、どのようにしたら表が完成できるか どうかお知恵を拝借願いますm(_ _)m

  • エクセルで条件に合わせて複数データを抽出したい

    シート1に基本データ(基データ)があり、シート2のセル内に条件を入れて、該当のデータをシート1から引っ張りたい。 具体的には、シート1に基本データ  ナンバ- 1 1 2 2 2 3 4 4 4  該当データ A B C D E F G H I シート2に 条件内容 1を入れてA B (複数データ)      2を入れてC D E       3を入れてF -----と、こんな具合になりたいのですが?   VLOOKUP は複数の抽出なので駄目でした。   

  • EXCEL 複数条件(VLOOKUP?)について 

    EXCEL 複数条件(VLOOKUP?)について  シート1 A列 B列 C列 D列     名前 日付 色  サイズ(数値) シート2 A列 B列 C列 D列     名前 日付 色  サイズ(数値) シート1とシート2のD列を比較させて違う場合をシート1の別の列に表示させたいのですが、 現在はA,B,Cを連結し、VLOOKUPにて処理しています。 今後件数が5000件を超える予定となっており、このままではPCが止まってしまう恐れがあるので 別の方法を模索しているのですが、何か良い方法はないでしょうか?

  • ExcelでLOOKUP関数がうまくいきません

    EXCELでシート間でLOOKUP関数を使って「Sheet1」に関数を入れ、 コード(C5のセル)にコードを入れたら、「Sheet2」からデータを 持ってくるというようにしたいのですが、うまくいきません。 コードに「300」といれても「003」と入れても同じものをひっぱてきます。 【A列に入れた式です】    (コード)      (A列) =IF(C5="","",LOOKUP(C5,Sheet2!$B$5:$B$20,Sheet2!$C$5:$C$20)) 【Sheet1】 コード   A     B      C      D 001   △△市  △△区  △△丁目   520   ◇◇市  ◇◇区  ◇◇丁目  ◇◇ 300   □□市  □□区  □□丁目 003   □□市  □□区  □□丁目 【Sheet2】 コード   A     B      C      D 300   ○○市 001   △△市  △△区  △△丁目 003   □□市  □□区  □□丁目 520   ◇◇市  ◇◇区  ◇◇丁目  ◇◇ あまりうまく説明できませんが、よろしくお願いします。

  • エクセル 複数条件での検索を関数を使って解決したいです。

    エクセル関数を使って複数の条件を満たしたときの 特定のセルの文字列を返す方法を考えています。 例を挙げると    A    B    C     D    E    F 1  金額  日付  名称   金額  日付 名称 2  100  1月5日  a    100  2月1日 =??? 3  200  1月5日  b 4  300  1月6日  c 5  400  2月1日  d 6  100  2月1日  XYZ 7  100  2月3日  e 8  200  2月3日  f 上のような表のときに 金額=「100」 かつ 日付=「2月1日」 という2つの条件を 満たしたときのC列の文字列「XYZ」を返すということをやりたいのです。 金額だけですとVLOOKUP関数を使って =VLOOKUP(D2,A2:C8,3,false) とやって「a」という文字列はかえってくるのですが どうやっても「XYZ」という文字列が返せません。 (日付の条件を入れていないので当たり前ですが...) なにかいい方法がありましたらお願いします。

  • エクセルのVLOOKUP関数で…(複数条件?の抽出)

    ●シート2、A列に部品正式名称、B列に部品略称の一覧表(部品の種類は約500点) ●シート3、A列に略称、B,C,D,E,F,G列と続けて寸法などの詳細を記した一覧表 があります。 ●シート1に検索一覧表として、B列(B3~B8)は項目、セルC3~C8にVLOOKUPでシート3の情報が抽出されるようにしてあります。 C1で略称を入力し抽出するのはOKなのですが、正式名称で入力しても同じようにシート3の情報を抽出するようにしたいです。 (IFを使って思いつく関数を組合わせてみたりしたのですが、うまくいきませんでした(TT) できたら関数で何か良い方法ありますでしょうか? 宜しくお願いします。

  • エクセル 複数条件で検索する数式を教えてください。

    社員の作業時間入力シートが2つあり、それぞれに入力しているため、入力ミスによる誤差が生じます。それをチェックしています。 検索条件が複数になる場合の計算式を教えてください。 [sheet1]   A   B   C   D  E 1 社員CD 日付  作業時間1 作業時間2  誤差 2 1000 2008/1/1   3.5  ここに数式   =C2-D2 3 1000 2008/1/2  2.5    数式    =C3-D3 4 1001 2008/1/1   5.0    数式    =C4-D4 [sheet2]   A   B   C    1 社員CD 日付  作業時間2 2 1000 2008/1/1  3.0 3 1000 2008/1/3   1.5 4 1001 2008/1/1  5.5 sheet1のD列にsheet2のC列を表示させたいのですが、 条件はA列とB列が一致するものになります。 A・B列が文字列ではないため、1列挿入して=A2&B2列を作成することができませんでした。 D列に数式をいれる事で一発で表示させる方法を教えてください。

  • エクセル関数2

    シート(1) A B C D 作業列    コード    顧客名     金額 3        300001     A 10,000 3        300002   B 15,000 3        300003   C 20,000 3        300004   D 25,000 3        300005   E 30,000 4        400001   F 35,000 4        400002   G 40,000  4 400003 H 45,000 4 400004 I 50,000 4 400005 J 55,000         シート(2) A B C D E F 「1」 「2」 「3」 「4」 「5」 「6」 10,000 35,000 15,000 40,000 20,000 45,000 25,000 50,000 30,000 55,000 ※ シート(1)にコード、顧客名、金額を入力すると、シート(2)にあるように該当するコードの先頭行の列に表示するようにしたいと思っています。 シート1で作業列を作りその作業列を基にシート2でVLOOKUP関数を使い‥シート2の10,000のセルの場合、 VLOOKUP(C$2,sheet1!$A$3,$D$12,4,false)として、下にコピーすると同じ金額になってしまいます。 セルが空白にならず、シート1の金額が上から順番にシート2に表記されるようにするにはどうしたらよいでしょうか。マクロはできませんので、関数で詳しく教えて下さい。宜しくお願いします。

  • 条件に合う空白のセルをカウントしたい

    Aシートに A B C D E F G H I J 1 あ 2 い    3          う     4       え Bシートに A 1 あ 2 い 3 う 4 え Aシートの数式VLOOKUPにて抽出しF1に”あ”を表示したのですが 条件としてA1の”あ”に対して 5マス以上空いていれば表示 5マス以下なら非表示 このように空白のセルをカウントして 条件に合う数式がわかりません。 何卒 ご指導のほどよろしくお願いします。

専門家に質問してみよう