• ベストアンサー

エクセル関数につきまして

皆様の知識を頂きたく、投稿させて頂きます。 EXCELのVLOOKUP関数なのですが、2個の条件から一致する項目を選ぶ事は出来ないのでしょうか? たとえばですが、 ≪参照シート≫ A   B   C   コード 数量  日付 → タイトル行 1   1    1/1 2   1    1/1 1   2    1/2 2   2    1/2 ≪入力シート≫ A   B   C  ~ コード 1/1  1/2  ~ 1 2 といった感じで、入力シートと参照シートのコードと日付が一致するデータを取り出したいのです。 VLOOKUPを重ねて使用したりとか、HLOOKUPを使用したり等考えたのですが、うまくいきませんでした。 現在使用しているのは、Microsoft Office EXCEL2003になります。 どなたかご教授下さい。 よろしくお願い致します。

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

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

#1です。 なるほど、複数の条件で検索したいということですね。 ≪参照シート≫    A   B    C   1 コード 数量  日付 → タイトル行 2  1    1    1/1 3  2    2    1/1 4  1    3    1/2 5  2    4    1/2 ≪入力シート≫    A   B   C  ~ 1 コード 1/1  1/2  ~ 2  1    1   3 3  2    2   4 を≪入力シート≫に実現したいのだと推察します。 なお、わかりやすいように数量は変更して書いています。 また、≪参照シート≫上で、「コードと日付の組み合わせが同じものはない」として考えています。 ≪入力シート≫のB2に =SUMPRODUCT((参照シート!$A$2:$A$100=$A2)*(参照シート!$C$2:$C$100=B$1)*(参照シート!$B$2:$B$100)) として、右および下へコピー。 繰り返しますが、 ≪参照シート≫上で、「コードと日付の組み合わせが同じものはない」 ということが大前提です。

shion_kun
質問者

お礼

vizzar様 ご返答遅くなりまして、申し訳御座いません。 SUMPRODUCT関数、初めて知りました。NETで調べたところ、色々と使えそうですね。 期待していた結果が得られました。 本当に有難う御座いました。

その他の回答 (2)

noname#79209
noname#79209
回答No.2

≪入力シート≫と表現されているのが気になります。 もしかして、 「入力シート」の「日付」と「コード」の交差点に「数量」を入力すると 「参照シート」に行を追加することも考えてますか? もし、そうなら、 他のセルにデータを放り込むようなことは、ワークシート関数では無理で、 VBA(マクロ)を使わないと不可能です。 運用のことも考慮して、考え直すことが必要になるかもしれません。

shion_kun
質問者

お礼

vizzar様 返事が遅くなりまして、申し訳御座いません。調子を崩してしまい、寝込んでおりました。 >「入力シート」の「日付」と「コード」の交差点に「数量」を入力す >ると >「参照シート」に行を追加することも考えてますか? というイメージではありませんでした。 たとえば、 vlookup(A1,参照シート!A:C,2,0) という文と、 vlookup(B1,参照シート!A:C,2,0) が、1個のvlookupの中で出来ないかな?と思いました。 (コードと日付が一致する数量を抽出という形です。) もう一度、最初から良く考えてみようと思います。 こんな質問へのご返答を感謝いたします。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

残念ながら、VLOOKUP関数の第1引数は1つのセルの値でなければなりません。 そして関数はセルの値を問題にしますことを十分頭においてください。 コードと日付を結合して1つのセルの値とし、検索表も結合したセルの列を最左列(検索表指定範囲の最左列)に作れば、理論的には検索が可能です。 検索表の検索列は文字列であるほうが安定です。 しかし日付がそのままでは、日付シリアル値という正の整数値であったりするので、また文字列化する場合も、日付書式が多様多種類なので、結合した文字列を作るときに注意を要します。 従ってエクセルに不慣れな人には難しいでしょう。 ーー またVLOOKUPほか関数は条件に合い、見つかった最初の行しか見出せません。ですから結合したコード+日付がユニーク(その列で唯一)でないと、役立ちません。 ーー この質問には「コード」が文字列か数字かが、書いてないが関心が薄いのではと思うが、こういうことを考えるときは危険です。 ーー 例として、結合情報の作り方は、コードは数値と仮定して A列    B列   C列  1 2008/5/17  00120080517 12 2008/5/18  01220080518 C列は結合列で、式は =TEXT(A1,"000")&TEXT(B1,"yyyymmdd") です。 それに、この上記のC列に当たる列は、参照シートの最左列か少なくとも数量の左側になければなりません。 それを避けるには、Match関数を使えば回避できます。(詳細説明略) === コード別、日付別の集計を出したいならば 発想の転換をして、SUMPRODUCT関数を使えば出来そうです。 (後記の不明状況があるため、詳細説明略) 本当はもう少しエクセル関数の経験を積まないと、質問者が自分ではどの式を使ったらよいか、VLOOKUPで出来るか、VLOOKUPを使ってやるにはどうするか(質問の路線)判らないと思います。 >取り出したいのです も、 (該当が1つで)1つのセルの値をを参照したい 条件該当のもの(複数セル)を集計したい 条件該当のものの各行を取り出して、別のシートやセルにリストしたい の3つがありますが、質問者の中では渾然として、質問に明確に記されていないようです。

shion_kun
質問者

お礼

imogasi様 ご返信有難う御座います。自分の文章力の無さが恥ずかしく思えてなりません。 もう一度自分のやりたい事をまとめて、再度質問したいと思います。 その際は、ぜひご回答をお願い致します。 また、 >VLOOKUP関数の第1引数は1つのセルの値でなければなりません。 はとても参考になりました。 感謝いたします。

関連するQ&A