• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル関数について教えてください!!)

エクセル関数で販売店毎の売り上げ金額を求める方法

このQ&Aのポイント
  • エクセル関数を使って、販売店毎の売り上げ金額を求める方法を教えてください。
  • エクセルファイルには複数の行があり、販売店とコード、売り上げ金額のデータが入っています。しかし、コードが重複しており、金額を合計したいです。
  • 求めたい結果は、販売店ごとに金額を合計した表です。お手数ですが、合計金額を求める関数の使用例も教えてください。

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

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

こんばんは! 一例です。 Sheet1のデータをSheet2に集計するようにしてみました。 ↓の画像で説明すると Sheet1に作業用の列を2列設けています。 作業列D2セルは =A2&B2 E2セルは =IF(COUNTIF($D$2:D2,D2)=1,ROW(),"") として、D2・E2セルを範囲指定し、E2セルのフィルハンドルでオートフィルで下へずぃ~~~!っとコピーします。 そして、Sheet2のA2セルは =IF(COUNT(Sheet1!$E:$E)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!$E:$E,ROW(A1)))) として隣のB2セルまでコピー C2セルに =IF(COUNTBLANK(A2:B2),"",SUMIF(Sheet1!D:D,A2&B2,Sheet1!C:C)) という数式をいれ、最後にA2~C2セルを範囲指定し、C2セルのフィルハンドルで下へコピーすると 画像のような感じになります。 以上、参考になればよいのですが 他に良い方法があれば読み流してくださいね。m(__)m

sky0707
質問者

お礼

tom04さんありがとうございます!!! 教えていただいた内容で問題解決できそうなのでやってみます(p≧∀≦q)〃

その他の回答 (6)

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

販売店ごとでコードごとに関数で並べ、しかもそれらの並びはいつも一定したものでない場合には意外と面倒ですね。次のようにしてはどうでしょう。 すべてのデータはシート1のA,B,C列の2行目から下方に有るとしてE列およびF列は作業列とします。 E2セルには次の式を入力します。 =A2&B2 F2セルには次の式を入力します。 =IF(A2="","",IF(COUNTIF(E$2:E2,E2)=1,IF(COUNTIF(A$2:A2,A2)=1,INT(MAX(F$1:F1))+1,INDEX(F$1:F1,MATCH(A2,A:A,0))+(COUNTIF(F$1:F1,">="&INDEX(F$1:F1,MATCH(A2,A:A,0)))-COUNTIF(F$1:F1,">="&INDEX(F$1:F1,MATCH(A2,A:A,0))+1))/1000),"")) E2およびF2セルを選択してそれらの式を下方にオートフィルドラッグします。 お求めの表を別のシートに作るとしてA1セルからC1セルにはシート1と同じ項目名を入力します。 A2セルには次の式を入力してC2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(ROW(A1)>COUNT(Sheet1!$F:$F),"",IF(COLUMN(A1)<=2,INDEX(Sheet1!$A:$B,MATCH(SMALL(Sheet1!$F:$F,ROW(A1)),Sheet1!$F:$F,0),COLUMN(A1)),IF(COLUMN(A1)=3,SUMIF(Sheet1!$E:$E,$A2&$B2,Sheet1!$C:$C),""))) これでシート1に新たにデータが入力されても即座に表が対応します。

sky0707
質問者

お礼

KURUMITOさんありがとうございます!!! 教えていただいた数式でも早速チャレンジしてみようと思います!!^^

noname#204879
noname#204879
回答No.6

関数が苦手な人向けの別解で、[ピボットテーブル]の機能を利用するのが簡単です。(結果は添付した右の図)

sky0707
質問者

お礼

mike_gさんありがとうございます!! ピボットも考えてみたのですが… 今回は更にデータ加工をしたい内容だったので関数で質問させていただきました。 とはいえ、苦手(苦笑)なので次回困った際に参考にさせていただきます^^

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

参考までに 私の提示した数式は基本的に配列数式ですので表示データ数が少ない場合は簡便な方法ですが、数式入力数が多くなると再計算に時間がかかるなど、実用性に問題があります。 この場合は、「ツール」「オプション」の計算方法タブで計算方法を「手動」にしておき、データを確認したい時のみF9キーを押して再計算させるようにします。 一方、補助列にCOUNTIF関数などの数式を多数の行にデータ数分だけ入力する場合は、メモリーの消費量が多くなり、エクセルがフリーズするなどの問題が発生します。 このような場合は、数式で処理するのではなく、ピボットテーブルで集計されることをお勧めします。 たとえば「データ」「ピボットテーブルと・・・」からピボットテーブルウィザードを起動し、行フィールドにA列とB列の項目名、データフィールドに売上金額をドラッグしてみてください。

sky0707
質問者

お礼

MackyNo1さんいろいろとありがとうございます!!!(*>▽<)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

以下のような数式で重複のないA列とB列のデータとその集計値を表示することができます。 E2セルに以下の式を入力し、右方向に1つ下方向に適当数オートフィルします(数式だけで処理すると表示するデータが多い場合は動きが重くなりますので運用に工夫が必要です)。 =INDEX(A:A,SMALL(INDEX((MATCH($A$2:$A$8000&$B$2:$B$8000,$A$2:$A$8000&$B$2:$B$8000,)<>ROW($A$2:$A$8000)-1)*1000+ROW($A$2:$A$8000),),ROW(A1)))&"" G2セルには、エクセル2007をご使用なら、計算負荷が少ないSUMIFS関数を使います(2003以前のバージョンならSUMPRODUCT関数を使うことになります)。 重複のないA列とB列の組み合わせを、計算負荷が大きい数式を使用せずに表示させるなら、フィルタオプションの設定を利用します。 エクセル2007ならデータタブの「詳細設定」で(2003なら「データ」「フィルタ」「フィルタオプションの設定」)、リスト範囲にA列とB列の範囲を指定し「重複するレコードは無視する」にチェックを入れてOKし、このデータを別シートなどに貼り付けてSUMIFS関数などで集計します。 #エクセルのバージョンによって使用できる関数や機能だけでなく、操作法も違いますので、質問の際には必ずバージョンを明記するようにしましょう。

sky0707
質問者

お礼

MackyNo1さん回答ありがとうございます。 そうですよね…基本的な記述が漏れておりました。バージョンは2003を使用しています。 失礼しました&助言ありがとうございます!!m(_"_)m

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.3

> 再問なのですが…コードが不規則でE列に入力できない場合はどのようにしたら良いでしょうか? 以下のページを参考にして重複データを整理してください http://editors-blog.hakenjob.com/archives/50040256.html A列B列をリスト範囲にしてD列E列を抽出範囲にすると一括でデータを入力できます。

sky0707
質問者

お礼

kmetuさんありがとうございます!!^^

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

D列に販売店、E列にコードを入力するとして =SUMPRODUCT((A1:A8=D1)*(B1:B8=E1)*(C1:C8)) でいかがでしょう

sky0707
質問者

お礼

kmetuさん早速の回答ありがとうございます!!! 再問なのですが…コードが不規則でE列に入力できない場合はどのようにしたら良いでしょうか?

関連するQ&A