• ベストアンサー

エクセルで複数の条件からデータを抽出する方法

次のような表において、A列の入荷日、B列の製品名から、別表に月別に製品別毎の入荷数及び合計金額を求める関数を教えて下さい。   A         B    C(個数) D(単価)         2013/2/15   みかん    100     50 2013/2/30   みかん    200     50 2013/3/2    りんご     50     70 2013/3/4    ぶどう    150     40 2013/4/3    いちご    100     50    よろしくお願いします     

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

簡単に求められるものではありませんね。 いくつかの作業列を作って対応します。 作業列が目障りでしたらそれらの列を選択して右クリックし「非表示」を選択すればよいでしょう。 お示しの表がシート1のA列からD列のデータが2行目から下方に入力されているとしてE2セルには次の式を入力して下方にドラッグコピーします。 =IF(C2="","",C2*D2) F2セルには次の式を入力して下方にドラッグコピーします。 =IF(A2="","",DATE(YEAR(A2),MONTH(A2),1)) G2セルには次の式を入力して下方にドラッグコピーします。 =IF(F2="","",IF(COUNTIF(F$2:F2,F2)=1,MAX(G$1:G1)+1,G1)) H2セルには次の式を入力して下方にドラッグコピーします。 =IF(F2="","",F2&B2) I2セルには次の式を入力して下方にドラッグコピーします。 =IF(H2="","",IF(ROW(A1)=1,1,IF(AND(COUNTIF(H$2:H2,H2)=1,G1<>G2),MAX(I$1:I1)+2,IF(COUNTIF(H$2:H2,H2)=1,MAX(I$1:I1)+1,"")))) それらの作業列のデータを使ってお求めの表をシート2に作成するとして A1セルには月、B1セルには製品名、C1セルには入荷数、D1セルには合計金額とでも項目名を入力します。 A2セルには次の式を入力してD2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>MAX(Sheet1!$I:$I)+1,"",IF(COUNTIF(Sheet1!$I:$I,ROW(A1))=0,IF(COLUMN(A1)=1,MONTH(INDEX(Sheet1!$F:$F,ROW(A1)))&"月集計",IF(COLUMN(A1)=3,SUMIF(Sheet1!$F:$F,INDEX(Sheet1!$F:$F,MATCH(ROW(A1)-1,Sheet1!$I:$I,0)),Sheet1!$C:$C),IF(COLUMN(A1)=4,SUMIF(Sheet1!$F:$F,INDEX(Sheet1!$F:$F,MATCH(ROW(A1)-1,Sheet1!$I:$I,0)),Sheet1!$E:$E),""))),IF(COLUMN(A1)=1,MONTH(INDEX(Sheet1!$F:$F,MATCH(ROW(A1),Sheet1!$I:$I,0))),IF(COLUMN(A1)=2,INDEX(Sheet1!$B:$B,MATCH(ROW(A1),Sheet1!$I:$I,0)),IF(COLUMN(A1)=3,SUMIF(Sheet1!$H:$H,INDEX(Sheet1!$H:$H,MATCH(ROW(A1),Sheet1!$I:$I,0)),Sheet1!$C:$C),IF(COLUMN(A1)=4,SUMIF(Sheet1!$H:$H,INDEX(Sheet1!$H:$H,MATCH(ROW(A1),Sheet1!$I:$I,0)),Sheet1!$E:$E),"")))))) これでシート1のデータの入力に応じて表が変化して月毎に整理されて表示されます。 なお、お示しのデータで2013/2/30とのデータが有りますが、このような日付は存在しませんので文字列としてのデータとなってエラーの原因になりますので注意が必要でしょう。2013/2/20のようにすることが必要でしょう。

gge7ahjk1n
質問者

お礼

早速のご回答ありがとうございます。 試したところ良好でしたありがとうございました

関連するQ&A