• ベストアンサー

エクセルの関数で困っています!

エクセルの関数について困っています。 現在で仕事で下記のような表を作成しています。 日付 品名  区分 個数  価格  合計 1/10 りんご  1  3  100 300 1/23 ばなな  2  2  200 400 2/20 りんご  1  2  100 200 この表でりんごはりんご、ばななはバナナで集計するには SUMIF関数が必要とのことなので区分分けして集計してます。 さらにこれを日付分けして集計したいんです。 次にこんな表を作ろうと思っています。 月日 りんご合計 ばなな合計 1月  300  400 2月  200 3月 4月  そのためにはSUMIF関数にさらにSUMIF関数を重ねて書かないとダメかな?と思っているんですが、どのような数式になるかわかりません。 区分分けしてかつ日付分けして集計したいのです。 この表を例にとって数式を教えていただけると助かります。 どうかよろしくお願い致します。

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

  • ベストアンサー
  • caim
  • ベストアンサー率50% (6/12)
回答No.3

関数で実現したいなら、SUMIF関数でもできるのでしょうが、私ならSUMPRODUCT関数を使います。 =SUMPRODUCT((MONTH(A2:A10)=1)*(B2:B10="りんご")*(F2:F10)) の式でできないでしょうか? A列に日付 B列に品名 F列に合計 が入ってるものとしました。 本来は配列の合計を求める関数ですが、質問のような場合にも利用できるので覚えておくと便利です。

takasii24
質問者

お礼

どうもありがとうございます。 SUMPRODUCT関数ですか。早速調べてやってみます! 二つの条件付で集計というのは初めてだったのでとまどいましたがこれでなんとかなりそうです。 助かりました!

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 色々方法はあるかと思いますが・・・ 一例です。 ↓の画像で説明させていただきます。 品目が増えても良いように作業用の列を使わせてもらっています。 (今回は品目で分けていますので、区分は不必要になるかと思います) Sheet1の作業列G2セルに =IF(COUNTIF($B$2:B2,B2)=1,ROW(A1),"") としてオートフィルでずぃ~~~!っと下へコピーします。 そして、Sheet2のA列の月日は単純に各月の数値だけを入力しておきます。 まず、品名B1セルに =IF(COUNT(Sheet1!$G$2:$G$100)<COLUMN(A1),"",INDEX(Sheet1!$B$2:$B$100,SMALL(Sheet1!$G$2:$G$100,COLUMN(A1)))) として列方向へオートフィルでコピーします。 最後にB2セルに =SUMPRODUCT((MONTH(Sheet1!$A$2:$A$100)=Sheet2!$A2)*(Sheet1!$B$2:$B$100=Sheet2!B$1),Sheet1!$F$2:$F$100) という数式を入れ、列方向と行方向にオートフィルでコピーすると 画像のような感じになります。 尚、「0」が目障りであれば メニュー → ツール → オプション の表示タブで「ゼロ値」のチェックを外しておきます。 尚、数式はSheet1の100行目まで対応できるようにしていますが、 データ量によって範囲指定の領域はアレンジしてみてください。 以上、当方使用のExcel2003での方法でした。 長々と書きましたが、参考になれば幸いです。 他に良い方法があれば読み流してくださいね。m(__)m

takasii24
質問者

お礼

非常にわかりやすい回答ありがとうございます。 まずはこれのとうりにやってみて導入できそうなら早速使ってみようと思います。 どうもありがとうございました!

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.1

多分、ピボットテーブルで、そのまんまの表が出来ると思います

関連するQ&A