• 締切済み

店舗・期間ごとの金額合計を出したい

エクセルで、店舗別に期間ごとの金額合計を出したいと考えています。 具体的には下記のような条件あります。 店舗    期間      金額  個数  A  2010年上半期   1,000   1  A  2011年上半期   2,500   2  A  2011年上半期   3,000   3  A  2010年上半期   1,000   4  B  2012年下半期   1,200   5  B  2012年下半期   2,000   6  B  2010年上半期   1,800   7  B  2010年上半期   2,600   8 求めたいものは ・A店の2010年上半期の金額合計、個数合計 ・B店の2012年下半期の金額合計、個数合計 といったような店舗別の期間毎の合計です。 どのような数式を使えば求めるものが出せますでしょうか? 数式の説明も合わせていただけると今後の為に助かります。 アドバイスをいただければと思います。 よろしくお願いします。

みんなの回答

回答No.5

>・A店の2010年上半期の金額合計、個数合計 >・B店の2012年下半期の金額合計、個数合計 >・店舗別の期間毎の合計です。 Exsel2003バージョン以下で出す場合 添付画像を基に説明すると・・・ SUMPRODUCT関数を使って、セルH2→ =SUMPRODUCT(($A$2:$A$9=$F2)*($B$2:$B$9=$G2),C$2:C$9) の式を右へコピー、下へコピー <意味> A列の店舗名の中の「A店(F2セル)に一致するものと、B列の「期間」の中の「2010年上半期(G2)」に完全一致するものの値をC列の合計範囲の中から探して一致するものだけを返すという意味ですね ・この配列数式はデータ量が多いと計算に時間が数秒ほど掛かります(メモリに依存しますので) もう一つ、Excel2007及び2010バージョンの場合 SUMIFS関数を使って、セルH2→ =SUMIFS(C:C,$A:$A,$F2,$B:$B,$G2)の式を右へコピー、下へコピー 意味合いは上と同じですが、上の式と違って範囲は固定ではなく列単位としています エクセルのバージョンが2007・2010でしたら二つ目の数式の方が簡単かな? ^^;

southmoon
質問者

お礼

お礼が遅くなり申し訳ありません。 いろいろな方法があることを改めて知りました。 おかげで欲しい値を出すことが出来ました。 ご回答ありがとうございました。

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

2010年(もちろん変更可能です)以降の上半期、下半期の金額合計、個数合計についてすべての店舗について関数を使って表にする方法です。 お示しの表がシート1のA列からD列に入力されており1行目は項目名で2行目から下方にデータが有るとします。 作業列としてE2セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(A2="","",IF(COUNTIF(A$2:A2,A2)=1,MAX(E$1:E1)+1,"")) F2セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(A2="","",INDEX(E:E,MATCH(A2,A:A,0))*1000+MATCH(B2,Sheet2!$1:$1,0)) シート2にお求めの表を表示するためシート2では次の操作をします。 B1セルには次の式を入力し右横方向にオートフィルドラッグコピーします。 =IF(OR(MOD(COLUMN(A1),4)=2,MOD(COLUMN(A1),4)=0),"",2010+ROUNDDOWN((COLUMN(A1)-1)/4,0)&"年"&IF(MOD(COLUMN(A1),4)=1,"上半期",IF(MOD(COLUMN(A1),4)=3,"下半期",""))) B2セルには次の式を入力して右横方向にオートフィルドラッグコピーします。 =IF(B1<>"","金額","個数") A3セルには次の式を入力し下方にオートフィルドラッグコピーします。 =IF(ROW(A1)>MAX(Sheet1!E:E),"",INDEX(Sheet1!A:A,MATCH(ROW(A1),Sheet1!E:E,0))) A列には店舗名が表示されます。 B3セルには次の式を入力して右横方向にオートフィルドラッグコピーしたのちに下方にもオートフィルドラッグコピーします。 =IF(OR($A3="",B$2=""),"",IF(B$1<>"",SUMIF(Sheet1!$F:$F,ROW(A1)*1000+COLUMN(B2),Sheet1!$C:$C),SUMIF(Sheet1!$F:$F,ROW(A1)*1000+COLUMN(B1)-1,Sheet1!$D:$D))) これですべての店舗について店名が表示され毎年の上半期、下半期における金額及び個数が一覧表示されます。ぜひ一度試験してみてください。

southmoon
質問者

お礼

お礼が遅くなり申し訳ありません。 いろいろな方法があることを改めて知りました。 おかげで欲しい値を出すことが出来ました。 ご回答ありがとうございました。

noname#204879
noname#204879
回答No.3

貴方のように数式が苦手な人のために、[ピボットテーブルレポート]という機能があります。 結果だけを添付図に示したので、ご自身で勉強されたし!

southmoon
質問者

お礼

お礼が遅くなり申し訳ありません。 いろいろな方法があることを改めて知りました。 今回は初挑戦でピボットテーブルを使ってみました。 おかげで欲しい値を出すことが出来ました。 ご回答ありがとうございました。

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

こんにちは! 一例です。 ↓の画像で、G1・G2セルに検索したい項目を入れます。 G3セルに =IF(COUNTBLANK(G1:G2),"",SUMPRODUCT((A2:A1000=G1)*(B2:B1000=G2)*(C2:C1000))) G4セルに =IF(COUNTBLANK(G1:G2),"",SUMPRODUCT((A2:A1000=G1)*(B2:B1000=G2)*(D2:D1000))) という数式を入れています。 ※ 数式の説明は IFは単に空白になった場合のエラー処理です。 SUMPRODUCT関数に関しては(G3セルの数式で説明すると) A2~A1000セル内でG1セルと一致するセルが「TRUE」=1となります。 B2~B1000セル内でG2セルと一致するセルが「TRUE」=1となります。 それぞれの行でC2~C1000セルの値を掛け合わせたものを合計! という数式です。 「TRUE」以外のセルは「FALSE」=0 となりますので、 C列にいくら大きな数値があっても一つでも「FALSE」のセルがあればその行は「0」となります。 最後に各行の合計をするのがSUMPRODUCT関数です。 尚、Excel2007以降のバージョンであれば SUMIFS関数・COUNTIFS関数が同様な感じで使えます。 こんなんで参考になりますかね?m(_ _)m

southmoon
質問者

お礼

お礼が遅くなり申し訳ありません。 いろいろな方法があることを改めて知りました。 おかげで欲しい値を出すことが出来ました。 ご回答ありがとうございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

データベース関数を使ってみては? 添付の図では、 A1:D9をデータベースエリア、 F2:G3をデータの抽出条件を手入力する欄、 F6:G6には抽出したい項目名を入れておく欄として使用しています。 F7に =DSUM($A$1:$D$9,F6,$F$2:$G$3) と、入れてG7にもコピーしてください。

southmoon
質問者

お礼

お礼が遅くなり申し訳ありません。 いろいろな方法があることを改めて知りました。 おかげで欲しい値を出すことが出来ました。 ご回答ありがとうございました。

関連するQ&A