• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル 集計)

エクセルで商品の販売データを集計する方法

このQ&Aのポイント
  • エクセルを使用して、販売データを集計する方法を紹介します。データは担当者コードと商品コードの2列で構成されています。販売した商品の種類が一番多い担当者コードと、販売した商品の種類数を求めることが目的です。
  • 例えば、担当者コード103の人が、3種類の商品を販売している場合、担当者コード103が一番多く商品を販売していることが分かります。データの行数は約15,000行であり、担当者は500名ほど、商品コードは10,000種類ほど存在します。
  • 集計方法は、エクセルの集計機能を使用して行います。まず、データを担当者コードでグループ化し、各グループにおける商品コードの重複数を数えます。その後、各担当者コードにおける最大の商品コード重複数を求め、それに対応する担当者コードと商品コードを表示します。

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

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

こんばんは! SUMPRODUCT関数を使えば可能だと思いますが、データが15000行あるということなので PCにかなりの負担になると思います。 そこでVBAでの方法になってしまいますが、コードの一例を載せておきます。 ↓の画像のようにSheet1のA・B列にあるデータをSheet2のA・B列に表示するようにしてみました。 Alt+F11キーを押す → 「標準モジュール」を選択し、↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") Set ws2 = Worksheets("sheet2") ws1.Columns(1).Insert For i = 2 To ws1.Cells(Rows.Count, 2).End(xlUp).Row ws1.Cells(i, 1) = ws1.Cells(i, 2) & "_" & ws1.Cells(i, 3) If WorksheetFunction.CountIf(Range(ws1.Cells(2, 1), ws1.Cells(i, 1)), ws1.Cells(i, 1)) <> 1 Then ws1.Cells(i, 1).ClearContents End If Next i For i = 2 To ws1.Cells(Rows.Count, 2).End(xlUp).Row If WorksheetFunction.CountIf(Range(ws1.Cells(2, 2), ws1.Cells(i, 2)), ws1.Cells(i, 2)) = 1 Then With ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1) .Value = ws1.Cells(i, 2) .Offset(, 1) = WorksheetFunction.CountIf(ws1.Range("A:A"), ws1.Cells(i, 2) & "_*") End With End If Next i Dim j As Long j = ws2.Cells(Rows.Count, 1).End(xlUp).Row Range(ws2.Cells(2, 1), ws2.Cells(j, 2)).Sort key1:=ws2.Cells(2, 2), order1:=xlDescending ws1.Columns(1).Delete (xlToLeft) End Sub 'この行まで 参考になれば良いのですが 他に良い方法があればごめんなさいね。m(__)m

WindsorAvenue
質問者

お礼

tom04さんへ おはようございます。 VBAをコピペして早速やってみました。 これなら次回以降もSHeet1にデータを貼り付けるだけで、集計できそうです。 重宝します。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 関数と作業列を使用して、販売した商品の種類が多い順に、担当者コードを並べて、順位と販売した種類の数を表示させる方法です。  尚、販売した種類の数が同じ担当者が複数いる場合には、元データの表中で、担当者コードが最初に現れている行番号が、若い順に並べた上で、同じ順位を付けています。  因みに、販売した種類の数が同じ担当者が複数いる場合にも対応させるためには、SUMPRODUCT関数のみで無理で、作業列が必要になりますし、どのみち作業列を使わざるを得ないのでしたら、SUMPRODUCT関数を使わない方が、処理速度が速くなります。  今仮に、元データの表が存在しているシートはSheet1であり、元データはその2行目から始まっているものとし、Sheet2のA列~D列を作業列として使用し、Sheet1のD列に順位、E列に担当者コード、F列に販売した種類の数を表示させるものとします。  まず、Sheet2のA2セルに次の数式を入力して下さい。 =IF(OR(Sheet1!$A2="",Sheet1!$B2=""),"",Sheet1!$A2&"@"&Sheet1!$B2)  次に、Sheet2のB2セルに次の数式を入力して下さい。 =IF(AND($A2<>"",COUNTIF($A$1:$A2,$A2)=1),Sheet1!$A2,"")  次に、Sheet2のC2セルに次の数式を入力して下さい。 =IF(AND($B2<>"",COUNTIF($B$1:$B2,$B2)=1),COUNTIF($B:$B,$B2),"")  次に、Sheet2のD2セルに次の数式を入力して下さい。 =IF($C2="","",$C2+COUNTIF($C$1:$C2,$C2)/COUNTIF($C:$C,$C2))  次に、Sheet2のA2~D2の範囲をコピーして、同じ列の3行目以下に、元データの表の行数と同じ行数か、或いはそれ以上の行数となるまで、貼り付けて下さい。  次に、Sheet1の D1セルに  順位 E1セルに  担当者コード F1セルに  販売種類数 と入力して下さい。  次に、Sheet1のE2セルに次の数式を入力して下さい。 =IF(ROW(E1)>COUNT(Sheet2!$C:$C),"",INDEX($A:$A,MATCH(LARGE(Sheet2!$D:$D,ROW(E1)),Sheet2!$D:$D,0)))  次に、Sheet1のF2セルに次の数式を入力して下さい。 =IF($E2="","",COUNTIF(Sheet2!$B:$B,$E2))  次に、Sheet1のD2セルに次の数式を入力して下さい。 =IF($E2="","",RANK($F2,Sheet2!$C:$C))  次に、Sheet1のD2~F2の範囲をコピーして、同じ列の3行目以下に、担当者の人数と同じか、或いはそれ以上の数の行数となるまで、貼り付けて下さい。  これで、販売した種類の数が多い順に担当者コードを並べて、各担当者コード毎の、販売した種類の数と、順位が、自動的に表示されます。  尚、もし、元データの表中で、データが入力されている最初の行が1行目である場合には、Sheet2のA2~D2の範囲をコピーして、Sheet2のA1~D1の範囲に貼り付けて下さい。

WindsorAvenue
質問者

お礼

kagakusukiさんへ SUMPRODUCT関数では、15,000行以上もデータがあると、 処理が遅くて困っていました。 元データは2行目からでしたので、ご教授頂いた方法でできました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

作業列を作ってピボットテーブルで集計してみてください。 添付の図では、C2セルに↓の式を入れてC10までコピーしてあります。 =1/SUMPRODUCT((A2=$A$2:$A$10)*(B2=$B$2:$B$10)*1) ただし、15000行もあるとレスポンスは悪くなるかもしれません。 その場合は、C2に =A2&"_"&B2 D2に=1/COUNTIF(C:C,C2) と入れて下にコピーしてピボットテーブルではD列の合計で集計してみてください。多少は軽くなるかと思います。

WindsorAvenue
質問者

お礼

mt2008さんへ できました!ありがとうございます。 お礼が遅くなりもうしわけございません。 C列とD列に関数を入れて、ピボットテーブルで集計しました。 集計時間も1分もかからず、大変助かりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

ピボットテーブルで集計してみてください。

WindsorAvenue
質問者

お礼

早速のご回答ありがとうございます。 ピボットテーブルでデータの個数で集計してみました。 同じ商品コードが二つある場合、 種類は1つですが、ピボットテーブルでは2とカウントされてしまい、 上記例で言うと、担当者コード561の人が4種類となってしまい、 正確なデータが集計できませんでした。 ピボットテーブルの集計方法が間違っているのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルでの集計

    A列に下記のようなデータが千件くらい入っています。 例:C-100/50/5/5   A-200/100/50/5   B-100/100/10/10   C-100/50/5/5   A-200/100/50/5   D-300/50/50       ・       ・ かなり重複もあります。 C列にA列のデータを以下の様に集計したいと思います。 例:A-200/100/50/5   B-100/100/10/10   C-100/50/5/5   D-300/50/50      ・      ・ 重複している場合は1行とし抜き出し、順番に集計したいのですが、 マクロか関数でする場合、どのような記述になるのでしょうか? よろしくお願いします。

  • EXCELでこんな集計はどうするのでしょうか

    商品管理の表で以下のようになっています。 A1   B1    C1     D1    E1 担当者 分類番号 商品コード 整理番号 以下各月毎の売り上げ そしてこの表は1500行程度あり、B列、C列でソートしています。 この表をB列の分類番号毎、C列の商品コード毎で各月の売上合計を上記の表のシートとは別のシートに集計したいのですが、どのようにしたらよいのでしょうか。シートをコピーして集計するのはできるのですが、そうしたら容量が(サイズが)大きくなりすぎるため、できれば避けたいと思っています。

  • EXCELの集計

    以下の様なデータがあります。 A列   B列   C列   商品A 第一営業部 100円 商品A 第一営業部 200円 商品B 第一営業部 200円 商品B 第一営業部 300円 商品B 第二営業部 150円 これをA列とB列が同じ時、C列を集計したい 上記の例ですと結果は、 A列   B列   C列   商品A 第一営業部 300円 商品B 第一営業部 500円 商品B 第二営業部 150円 の様にしたいです。 元データ(列)が60,000行くらいありますので、 一機に行える方法をご教示頂ければと存じます。 宜しくお願い致します。

  • エクセルの集計表について

    エクセルで下記のような表があります。 商品コード  商品名   A店(個) B店(個) 12      いちご   3      2 66      バナナ   6      20 12      いちご   55      4 55      メロン   12      9 66      バナナ   100      15 12      いちご   99       38              ↓ 商品コード  商品名   A店(個) B店(個) 12      いちご 合計             157    44 55      メロン 合計             12      9             66       バナナ    合計             106    35 集計表を使って、商品ごとにA店とB店の個数合計を出すのですが、 個数合計が出た行のみを、一括で書式を変えるにはどうしたらよいでしょうか? 商品は、100種類くらいあって、すべてのデーターの数は、3000くらいあります。 合計の列だけを抽出して、ドラックしてコピーしても、その間にあるすべての列が変更されてしまうので。 エクセルは、あまり詳しくないので、詳しいかたどうぞよろしくお願いします。

  • Excelでの集計その2

    以前、似た質問をしたものです。下記のケース を、Excel(Excel2000)で作れるでしょうか 次のようなデータが10000件ほどあります。 ------------- (A)--------------------------- 行 商品コード 品名 品番  数量   金額 1 10010005   A商品 A-005  5   1000 2 10010006   B商品 B-006  5   1050 3 10010006  B商品 B-006  6   1100 4 10010007   C商品 C-007  10   100 5 10010008   D商品 D-008   6   60 6 10010009   E商品 E-009   3   300 7 10010010   F商品 F-010  7   700 8 10010010   F商品 F-010   3   300 ------------- (B)--------------------------- 行 商品コード 品名 品番  数量   金額 1 10010005   A商品 A-005  5   1000 2 10010006   B商品 B-006  11   2150 3 10010007   C商品 C-007  10   100 4 10010008   D商品 D-008   6   60 5 10010009   E商品 E-009   3   300 6 10010010   F商品 F-010  10   1000 ------------------------------------------------- (A)のような商品コードが一部同じデータを商品コードをキーにして、数量、金額を集計して(B)のようにしたいのですが、Excelでどのようにしたら出来るでしょうか? よろしくお願いします。

  • EXCEL2007 集計方法を教えて下さい。

    EXCEL2007 集計方法を教えて下さい。 sheet1は、商品の出荷データが入っています。 A列・・得意先コード、B列・・品番、C列・・出荷数 sheet2で集計します。 A2以降に商品コードが入力してあります。 A1に得意先コードを入力すれば、sheet1のA列を参照し、該当得意先の商品出荷数をsheet2のC列に集計したいのです。 (sheet1のデータは羅列です。 例えば、山本屋のりんご購入履歴が1行目や10行目21行目と入力されているイメージです。

  • エクセル 集計方法を教えてください

    エクセル2003について教えてください。 宜しくお願いします。  A B C 1 2 あ   2 0   あ 3 2 い い 4 1   あ 5 2 あ あ 上記のような表で、「B列にあ」と「C列にあ」と「B列C列共にあ」の場合のA列の合計値5を導きだすには どのようにしたら良いのでしょうか? 上記のようなあの合計・いの合計と20種類の合計値を 200行ぐらいから集計したいのですが宜しくお願いいたします。

  • エクセルで集計表を作ろうとしています。

    エクセルで集計表を作ろうとしています。 商品コード  商品名   A店(個) B店(個) 12      いちご   3      2 66      バナナ   6      20 12      いちご   55      4 55      メロン   12      9 66      バナナ   100      15 12      いちご   99       38 上記のような表から、商品ごとにA店とB店の個数を出したいのですが、 商品は、100種類くらいあって、すべてのデーターの数は、3000くらいあるので、簡単に出す一番いい方法を教えてほしいです。 最終的には、 商品コード  商品名  A店  B店 12    いちご  231  100 55    メロン  230  55 66    バナナ  99   198 みたいなかんじで4項目を100くらいある商品コード順に表示したいです。 ピポットや集計表を使えばいよいのでしょうか?エクセルは、あまり詳しくないので、詳しいかたどうぞよろしくお願いします。

  • エクセルデータの集計方法

    次のような膨大なデータがありますが、これを集計結果のように取りまとめたいのですが、簡単で早くできる方法がありましたら教えて下さい。 <データ>    A   B      1行 ○  10 2行 △  52 3行 ◇  25 4行 ○  15 5行 ◇  68 <集計結果>    A   B 1行 ○  25 2行 △  52 3行 ◇  93 データはA列の項目をまとめ、更にA列項目ごとにB列数値を合算するのが目的です。

  • エクセルで集計

    エクセルで集計 シート1:A列に日付2000行程度、B列に品名A,B,C,D…500種類程度、C列にその内容。日毎に行は増えていきま、同じ品名が何度も登場してきます。 シート2:ここに新しくシート1の集計をして、同じ品名の多い順に並べ替えてリストを作成したいと思います。 シート1に新しく行が増えると同時にシート2の集計に反映させたいのですが、いい方法はありますか?

専門家に質問してみよう