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

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

エクセル関数について教えてください!!

エクセル関数について教えてください!! エクセルファイルに以下のようなデータがあります。 A列 B列 C列 あ  A10 100  あ  A10 110 あ  B10 120 い  C10 100 い  D10 100 う  E10 100 あ  B10 120 い  C10 100 A列:販売店 B列:コード C列:売り上げ金額 (合計8000件程度) 販売店毎での売り上げ金額を求めたいのですが、B列のコードが重複しています。 販売店+重複コードは1つに纏めての金額を求める関数を教えていただけますでしょうか。 イメージ あ  A10 210 あ  B10 240 い  C10 200 い  D10 100 う  E10 100 よろしくお願いしますm(_ _)m

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

  • ベストアンサー
  • 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

  • エクセルIF関数について

    エクセルIF関数について エクセルのIF関数を利用して、重複するデータを抽出したいと思っています。 エクセルのIF関数を利用したことがないため、別の対応策があれば そちらも教えていただけませんでしょうか・・ 宜しくお願いいたします。 下記のようにA列に入っている1,2,3,4,5があり重複しているものをD列に一つにまとめ重複している1、5の合計分と重複していないものをEに表示させたいと思っています。     A  B     D   E 1  1  123    1  249 2  1  3      2  3 3  1  123    3  345 4  2  3      4  234 5  3  345    5  1665   6  4  234     7  5  555 8  5  555 9  5  555 D1、E1にはどのような関数で対応するのが適しているのでしょうか?

  • エクセルの関数

    エクセルの関数 ですが、 SUMIF を使いたいのです。 シート1の 1行目には 見出しが入っています。 A2~A50に、A店 B店 C店 D店 がランダムに入っています。 B2~B50に、名前が入っています。 C2~C50に、売上の数字が入っています D2~D50に、すべてに 1 が入っています。 E2~E50には、ところどころに 1 が 入っています。 シート2に、SUMIFを使って、E2~E50に入っている 1 の人だけの 各店の合計を出したのですが、どうやったらいいのですか? シート2のA1にはA店 A2にB店 A3にC店 A4にD店 が入っています。 そうすると、シート2のB2には、 =SUMIF(Sheet1!A2:A50,A2,Sheet1!$C$3:$C$50) となるということでいいのですか? ですが、 これは、各店の全体の合計です。 やりたいのは、E2~E50に 1 が 入ってる人のみ 各店の 合計を シート2の B列にだしたいのです。 関数の方法を教えてください

  • エクセルでの関数

    エクセルで下記を行いたいのですが、関数でどのようにすれば良いでしょうか。(関数で困難であればVBAでも良いです) A列で同じ名称の分に対して、それと同じ行のD列とE列の数値の合計を それぞれのセルに表したいのですがどのようにすれば良いでしょうか? 例えばA6に北海道のD列E列合計106.5、A7に岩手のD列E列合計16.5、 A8に山梨のD列E列合計29を表したいです。   A    B   C   D  E 1 北海道 文章A 数値1  2 24.5  2 北海道 文章B 数値2  4  50 3 北海道 文章C 数値3  6  20 4 岩手  文章D 数値4 11.5  5 5 山梨  文章E 数値5  25  4

  • Excelでの関数vlookupの応用

    関数については、ほとんど初心者の者です。 vlookup関数では、縦型の表の中から必要なデータを取り出すことができますが、それを応用して取り出した数値の合計を出すことはできますか? もし、vlookup関数以外の関数で、そのようなことをできる関数を知っている方、教えてください。お願いします。 (例:セルA列に科目、B列に科目コード、C列に金額の表で、    D列セルに科目コードを打ち込むと、E列にはB列から    抽出した科目コードの金額(C列)を合計して反映)

  • エクセルのRANK関数だと思うのですが…教えてください。

    エクセルについての質問です。   A    B    C     D    E 1 日付 コード  商品名  個数  金額 2 5/1  001   ○○    1   1,000 3 5/1  002   ××    2   10,000 4 5/2  001   ○○    1   1,000 5 5/3  003   △△    5   3,000 6 5/3  004   ■■    10   5,000 7 5/5  004   ■■    5   2,500 という表を現在作っております。 これのランキングだと思うのですが 同じコードの場合売上金額を合計して下記みたいな 別表を作りたいと思っています。 ★ 売上ベスト10   1位   002    ××   2   10000   2位   004    ■■   15   7500 どこから手をつけていいのかわからないので 教えて頂けませんでしょうか。よろしくお願いします。

  • Excelの関数について

    エクセルの関数を教えて下さい。 できあがりの図 名前 該当 --------- A  * B C  * D E F  * 名前  --------- A   B C   D E F   という、データと 名前 ------- A C F というもう一つのデータをマージさせ 重複しているものに「*」をつけ、 出来上がり図を作りたいのですが、 「該当」列にはどのような関数を入れればいいのでしょうか。 ご教示下さい。

  • エクセルの日付関数について教えてください。

    エクセルの日付関数について教えてください。 A列には日付が入力されています。 B列には金額が入力されています。 C列にも日付が入力されています。 A1に入力された日付(例:2010/4/30)とC1に入力された日付(例:2010/4/30)が同じ日付のときだけ、B列の金額を抽出しD10に合算させたいと考えています。 ***【サンプル】*****************************    A   B   C   D 1 4/30  100  4/30 2 4/30  200  4/30 3 5/1   100   4 5/2   200  5/2 5 5/2   100  5/2 6 7 8 9 10            同じ日付(1)の合計 11            同じ日付(2)の合計 ******************************************* 上記の場合のD10やD11の関数は、どのような関数に すべきでしょうか? どなたかご教授をお願い致します。 【環境】 WindowsXP Pro Excel 2003

  • エクセル関数で行を抽出したいのですが…

    エクセルでsheet1にA2:AQ2034とデータがあります。 A列=コード(重複コードなし) B列=商品名(重複商品名なし) C~AQ=月々の売上(2003.1~2006.5までの月々売上) これをsheet2でA列、A1をタイトル行とし、A2以下にコードを入れると そのコードの行(B~AQ)が抽出されるようにしたいのですが、 関数でどのようにしたらいいでしょうか? ご教授お願いします。

  • Excel 非表示の列を飛ばして合計できる関数ってありますか?

    Excelで、非表示にした列をのぞいて合計する関数はありますか? 例えば、A1からE1まで数値が入っていて、C列が非表示になってるとします。 残りのA1,B1,D1,E1だけを合計できる関数ってありますでしょうか?

  • エクセル2010の関数

    計算式を構築したいのですが、どの関数を当てはめたら良いのか分からないので、ご存知の方がいらっしゃいましたら教えて下さい。 A,B,Cの3列があります。 Aには日付、Bにはドロップダウンリストで「売上高」と「雑収入」を選択できるようにしています。 Cには金額を入力します。 B列に「売上高」を選択した際にC列からそれに対応する金額の合計を計算。 B列に「雑収入」を選択した際にC列からそれに対応する金額の合計を計算。 できる関数式を構築することは可能でしょうか? ご存知の方がいらっしゃいましたら何卒教えて下さい。よろしくお願いいたします。

専門家に質問してみよう