• ベストアンサー

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

皆様の知識を頂きたく、投稿させて頂きます。 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/17068)
回答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

  • VLOOKUPとINDIRECTで別のEXCELファイルのシートを参照したい

    EXCEL2007を使用しています。 添付画像のように、例えば、B2のセルには =IFERROR(VLOOKUP(A2,INDIRECT($B$1&"!a:b"),2,FALSE),0) という関数があり、VLOOKUPとINDIRECTを使って同じEXCEL内の 別のシートを参照するようにしてあります。 ※シートをそれぞれ 0910,0911,0912という名前にして各年月毎に 商品コードと数量を入れてあります。 この商品コードと数量が入ったシートを数量.xlsxという別のEXCELファイルにして このMAINのEXCELシートにデータを持ってきたいのです。 何か方法はありますでしょうか?よろしくお願いします。

  • エクセル関数

    エクセル2010を使っていますが、1つのシートAには販売時の日付、品番、数量、単価、販売額が記されており、同一ファイル内には別のシートBで指定した日付の売上明細を表記したいと思っていますが、うまく関数が組めません。どのような関数を組めば表記できますでしょうか?ちなみにシートAは1か月継続して使うため最大ラインがおおよそ1000行くらいで、シートBは最大50行くらいの表記が可能である必要があります(A5~A55行目) 指定した日付の売上明細(シートB)に表記が必要なので品番、数量、金額になります 指定する日付ですが、シートBの先頭行A1かB1に日付を入力し、A5行目から開始しようと思っています。A5は品番、B5は数量、C5は数量、D5は単価、D6は合計を表記したいと思っています

  • ExcelのSUMIF関数についてです。

    ExcelのSUMIF関数についてです。 下記のような表を使用して、 商品コードが一致する商品数の合計をD2セルに入力したい。 (※A2,A3,A4...とA列の中でコードが一致したら、その数量の合計を出す)       A        B       C    D 1     商品コード  商品名   数量   計 2     PD0001    AAA     50 3     PD0019    BBB     20 4     PD0009    CCC     150 5     PD0001    AAA     1 6     PD1004    DDD     15 7     PD1027    EEE     50 8     PD0009    CCC     40 9     PD0019    BBB     30 :      :         :       : :      :         :       : sumif関数を使用して、 D2に =SUMIF(A:A,A2,C:C) を入力コピーすると     D     計 2   35 3    1 4   50 5   45 6    0 7    0 8    0 9    0  :    : :    : となってしまいます。     D     計 2   51 3   50 4   190 5   51 6   15 7   50 8   190 9   50  :    : :    : という出力にするにはどうしたらいいでしょうか? ちなみに、コードではなく商品名で D2に =SUMIF(B:B,B2,C:C) を入力コピーするとうまくいきます。 初歩的なことなのかもしれませんが、 商品コード数も数量もかなり膨大なものを計算するので困っています。 宜しくお願いします。

  • ExcelのVLOOKUP関数の動作をMySQLでやる方法ありますか?

    ExcelのVLOOKUP関数の動作をMySQLで やりたいのですが、方法はあるのでしょうか? たとえばExcelでは Sheet1に顧客情報 A列      B列  C列 利用者コード  名前 電話番号 AAA      田中 03-0000-0000 BBB      佐藤 03-0001-0001 CCC      山口 03-0002-0002 Sheet2に利用履歴 A列 B列      C列 No. 利用者コード 名前 1  AAA  =VLOOKUP(B2,Sheet1!A:C,2,0) 2  CCC  =VLOOKUP(B3,Sheet1!A:C,2,0) 3  AAA  =VLOOKUP(B4,Sheet1!A:C,2,0) 4  BBB  =VLOOKUP(B5,Sheet1!A:C,2,0) 5  CCC  =VLOOKUP(B6,Sheet1!A:C,2,0) ExcelではSheet2を上記のようにすれば 利用者コードからSheet1のB列に入力されて いる名前を参照できますよね。 MySQLのテーブルは テーブル1はSheet1と同じ テーブル2はNo. 利用者コードだけで名前はありません。 Sheet2のような出力結果・参照方法を MySQLでやる方法はありますか? SELECT文で出力できるのならベストですが その他の方法がありましたらそちらの 方法も教えていただきたいです。 やはりMySQLのレコードをCSV形式か何かで出力して Excelで処理したほうがいいんでしょうか? どなたかご教授願います。

    • ベストアンサー
    • MySQL
  • エクセルの関数についてです、よろしくお願いします

    エクセルの関数についてです、よろしくお願いします。 sheet1に以下の様なデータが何百行とあります。 A B C D E 日付  顧客名  品名  数量  金額 上記のsheet1のデータを基にsheet2へ抽出して転記する ものを作りたいと考えています。 具体的に言いますと sheet2のA1に2014/11/21、 B1に2014/12/20、 C1に ○○商店と入力するとその下に A      B     C     D 日付   品名   数量 金額 2014/11/23  りんご 5 750 2014/11/28  みかん 2 300 2014/12/2   いちご 3 600 2014/12/10  りんご 5 750 sheet1のリストから該当するものを引っ張ってきて sheet2へ表示させるものです オートフィルタ等でなく、関数で出来ないでしょうか お詳しい先生方よろしくお願いします。

  • Excelについて 適した関数探してます

    シート1に下のようなデータがあり、 A1~A10が番号 B1~B10が○ C1~C10が△ D1~D10が□ E1~E10が× シート2に、A1に番号を入力すると B2に○ C3に△ D3に□ E3に× (○△□×は、数字やデータがはいってます) 解りづらかったらすいません。 要は、シート2のA1に、番号をいれると、シート2のB2~E3に、シート1のデータがでるようにしたいのです。 このような事をしたいのですが、VLOOKUPでできますか? 他に適した関数、式の立て方はありますでしょうか? 挑戦してるのですが、なかなかできません。 XPで、Excel2003です。 良かったらご意見くださいm(_ _)m

  • エクセル関数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に表記されるようにするにはどうしたらよいでしょうか。マクロはできませんので、関数で詳しく教えて下さい。宜しくお願いします。

  • 【Excel】日付を条件のひとつに指定してデータ集計

    Excel2003を使用しています。 Sheet1   A    B         C 1 4/1  (株)Excel    \100 2 4/1  ACCESS    \300 3 4/1  Excel(株)    \200 4 4/2  Word       \150 5 4/2  Excel       \100 6 4/3  ACCESS(有)  \200 7 4/3  Excel       \100 7 4/3  (有)ACCESS  \100 が入力されている表があります。 Sheet2に   A    B    C 1 4/2  合計値 個数 2 4/3  合計値 個数 Sheet2のA1セルに日付(仮に4/2とします)を入力したら、Sheet1にある条件に一致する日付を検索し、尚且つ、部分一致する文字列(仮にExcelとします)を検索し、両条件に一致したC列の合計を Sheet2のB1セルに表示させる様にしたいのですが、どのようにすればいいでしょうか? 又、上記同様で Sheet2のA1セルに日付(仮に4/3とします)を入力したら、Sheet1にある条件に一致する日付を検索し、尚且つ、部分一致する文字列(仮にACCESSとします)を検索し、両条件に一致した個数を Sheet2のC2セルに表示させる様にしたいのですが、どのようにすればいいでしょうか? 関数で試してみたのですが、うまくいかなかったので、質問させていただきました。 よろしくお願いします。

  • Excel VLOOKUP関数の縦検索は出来ないのでしょうか?

    A列   B列   C列   D列 --------------- 品名   数量  数量  数量      12/1  12/5  12/10 みかん  10箱  15箱  10箱 いちご      3箱 りんご  5箱   2箱  10箱 上記のような表を、日付で抽出し、発注書を作成したいのですが、縦で抽出することなんて出来ませんか? 今は、別のシートに行列を入れ替えて貼り付けをして、そこからVLOOKUPで参照しています。 よろしくおねがいいたします!

  • エクセル 関数を使わずにデータを取りたい

    EXCELを使ってデータ入力をしたいです。 下の図のように、シート1のA列にコードを入力すると、シート2のテーブルから値を引っ張ってくるようにしたい。 たとえば、シート1のA1に"C001"を入力したら、B1に"赤"が自動入力されるようにしたい。 シート1 A列 B列 行1 C001 シート2 A列 B列 行1 C001 赤 行2 C002 青 行3 C003 黄色 ただし、シート1のB列の値は、入力後に編集するため、ここには計算式を入れたくないのです。 なので、通常ならばB列にVLOOKUP関数を使えばすむことですが、計算式を入れずに上記を実現する方法を教えてください。

専門家に質問してみよう