ExcelのVBAでデータ集計をする方法

このQ&Aのポイント
  • ExcelのVBAを使用して、元データのシートから集計シートを作成する方法について説明します。
  • 元のサイズのものが使用されて売れたかを集計するには、SUMPRODUCT関数を使用できます。
  • 集計用のシートには、品名、サイズ1、元のサイズ、売り上げた量の合計を表示します。
回答を見る
  • ベストアンサー

ExcelのVBAで集計をしたいです。

EXCELで、VBAを使用して元データのシートから、集計シートを作成したいです。 Sheet1 A B C D E F 1 品名 サイズ1 サイズ2 サイズ3 元のサイズ 売り上げた量 2 A 1 100 150 200 1000 50 3 B 2 100 200 100 1500 10 4 A 2 200 300 500 2000 100 5 A 1 150 150 100 1000 80 6 A 2 150 150 600 3000 100 Sheet2(集計用に新規作成されたシート:作成時は空シート) A B C D 1 品名 サイズ1 元のサイズ 売り上げた量の合計 2 A 1 1000 130 3 B 2 1500 10 4 A 2 2000 100 5 A 2 3000 100 元のサイズのものがどれだけ使用されて売れたのかを集計しようとしています。 ちなみにサイズ1は変更されません。 条件が複数個になるので、Sheet2の合計は、SUMPRODUCTを使用することになると思うのですが、 C列までの、品名、サイズ1、元サイズが重複しないように抽出するためには、 どのようにしたらよいのでしょうか?

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

ご提示の表は、データに区切りがなく、意味不明な文字の羅列になっています。 そのため回答がつかないのだと思います。 > 元のサイズのものがどれだけ使用されて売れたのかを集計しようとしています。 「品名」がA列、「元のサイズ」はE列にあるんですね? 同じ「品名」でも「元のサイズ」が違えば、別集計するんですね? つまり、「品名」+「元のサイズ」が一致するものの売上をVBAで集計すればいいんですね? > ちなみにサイズ1は変更されません。 > 条件が複数個になるので、Sheet2の合計は、SUMPRODUCTを使用することになると思うのですが、 > C列までの、品名、サイズ1、元サイズが重複しないように抽出するためには、 VBAではSUMPRODUCT関数は関係ないし、他にもこの部分は意味不明なので無視します。 こんな感じでいかがでしょう? A列に「品名」、B列に「元のサイズ」、C列に「集計した売上」です。 Sub test()   Dim myDic As Object   Dim myV, myW, myX, myY   Dim i As Long, n As Long   Dim ws As Worksheet   With Sheets("Sheet1")     myV = .Range("A1", .Cells(Rows.Count, "F").End(xlUp)).Value   End With     ReDim myW(1 To UBound(myV), 1 To 2)   Set myDic = CreateObject("Scripting.Dictionary")   For i = 1 To UBound(myV)     If Not myDic.Exists(myV(i, 1) & myV(i, 5)) Then       myDic.Add myV(i, 1) & myV(i, 5), myV(i, 6)       n = n + 1       myW(n, 1) = myV(i, 1)       myW(n, 2) = myV(i, 5)     Else       myDic(myV(i, 1) & myV(i, 5)) = myDic(myV(i, 1) & myV(i, 5)) + myV(i, 6)     End If   Next i   Set ws = Sheets.Add   ws.Range("A1").Resize(UBound(myDic.keys) + 1, 2).Value = myW   ws.Range("C1").Resize(UBound(myDic.keys) + 1, 1).Value = Application.Transpose(myDic.items) End Sub

Tomo-10-21
質問者

お礼

質問の仕方が悪く、お手間をかけさせ、申し訳ありませんでした。 いただいたもので実行し、自分のやりたいものにも反映し、無事出来上がりました。 ありがとうございました。

関連するQ&A

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

    エクセルでの集計について質問です。 【4月】 (営業A)              (営業B) A     B       C      D       E      F 会社名  品名   売上金額  会社名  品名   売上金額 ○○   ××   ¥10,000   □□   △△   ¥50,000 □□   ■■   ¥30,000   ★★   ○○   ¥20,000 ○○   ☆☆☆  ¥50,000   ○○   ???  ¥30,000 上記のように1枚のシートに営業さんごとに分けて月別の売上表を作っています。 最後のシートに個人ごとの年間売上げ表を作りたいのですが、 【年間合計】      (営業A)   (営業B) A      B      C       会社名  売上金額  売上金額 ○○   ¥60,000  ¥30,000 □□   ¥30,000  ¥50,000 ★★   ¥0     ¥20,000 上記のように会社名ごとに年間合計を作る場合にはどのような方法がありますでしょうか?(年間合計に品名は必要ありません) SUMIFを入力してみたら、ものすごく式が長くなってしまいました… 他に方法がありましたら宜しくお願いします。

  • エクセルで集計

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

  • エクセル関数でグループ単位に集計を行う

    エクセル初心者です。 入力伝票データを元に、集計シートに自動的に品名コード順の合計を作成したいのですが、うまくできません。 データシートのデータをソートせずに関数だけで出来る方法をお教えください。 ※エクセルはExcel2003を使用しています。 《データシート》例 [見出し] A1:年月日,B1:伝票番号,C1:品名コード,D1:数量,E1:単価,F1:金額 [データ] A2:2008/10/1,B2:Z-001,C2:S0001,D2:3,E2:1,000,F2:3,000 A3:2008/10/1,B3:Z-002,C3:S0002,D2:1,E3:2,000,F3:2,000 A4:2008/10/1,B4:Z-003,C4:S0003,D4:2,E4:3,000,F4:6,000 A5:2008/10/2,B5:Z-004,C5:S0002,D5:1,E5:2,000,F5:2,000 A6:2008/10/2,B6:Z-005,C6:S0001,D6:3,E6:1,000,F6:3,000 A7:2008/10/3,B7:Z-006,C7:S0003,D7:2,E7:3,000,F7:6,000 《集計シート》例 [見出し] A1:品名コード,B1:伝票数,C1:数量計,D1:合計金額 [集計値] A2:S0001,B2:2,C2:6,D2: 6,000 A3:S0002,B3:2,C3:2,D3: 4,000 A4:S0003,B4:2,C4:4,D4:12,000 ※品名コードは固定せず、データシートに入力されたものだけを集計したい

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

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

  • SUMIF関数と同じ集計をVBAで行いたい

    今はSUMIF関数で複数シートデータの集計をしていますが、 データ数が膨大なため処理に多大な時間が掛かっています。 VBAで同じ様な処理がしたく、ご教授の程よろしくお願いします。 Sheetは1~12まであり、同じレイアウトです。 行数は、Sheetごとに異なります。 集計結果Sheetに、品名ごとの収入計と支出計を集計したい。 Sheet1    A    B    C    D 1 月日  品名   収入 支出 2 5/10  りんご  30000  20000 3 5/15  さかな  20000  30000  4 5/20  きのこ  50000  20000 5 5/25  さかな  30000  10000 6 5/30  おかし  15000  10000 7 5/30  おかし  20000  20000 5 5/10  りんご  40000  20000 Sheet2    A    B    C    D 1 月日  品名   収入 支出 2 6/13  きのこ  10000  30000 3 6/25  さかな  20000  20000 4 6/30  おかし  55000  30000 5 6/10  りんご  20000  10000 6 6/15  さかな  10000  10000 集計結果Sheet    A    B    C 1 品名   収入  支出 2 きのこ 3 さかな  4 おかし  5 りんご 

  • 【再質問】SUMIF関数と同じ集計をVBAで行いたい

    恐縮なのですが、今一度質問させてください。 今はSUMIF関数で複数シートデータの集計をしていますが、 データ数が膨大なため処理に多大な時間が掛かっています。 VBAで同じ様な処理がしたく、ご教授の程よろしくお願いします。 Sheetは1~12まであり、同じレイアウトです。 行数は、Sheetごとに異なります。 集計結果Sheetに、品名ごとの月集計をしたい。 Sheet1    A    B    C    D 1 月日  品名   収入 支出 2 5/10  りんご  30000  20000 3 5/15  さかな  20000  30000  4 5/20  きのこ  50000  20000 5 5/25  さかな  30000  10000 6 5/30  おかし  15000  10000 7 5/30  おかし  20000  20000 5 5/10  りんご  40000  20000 Sheet2    A    B    C    D 1 月日  品名   収入 支出 2 6/13  きのこ  10000  30000 3 6/25  さかな  20000  20000 4 6/30  おかし  55000  30000 5 6/10  りんご  20000  10000 6 6/15  さかな  10000  10000 集計結果Sheet    A    B    C    D 1 品名   4月   5月   6月 2 きのこ  3 さかな  4 おかし  5 りんご  例)きのこ 4月の収入-支出を、B2セルに入力したい。 シートは4月・5月と、月別に分かれています。

  • Excel集計方法を教えてください!

    以下のようなシートがあります。 シート(1) A列、B列、C列、D列、E列 品名、商品名、A店、B店、C店 --------------------- 果物、いちご、8個、7個、6個 果物、ぶどう、2個、8個、2個 野菜、大根、3個、3個、2個 野菜、人参、2個、5個、8個 野菜、白菜、1個、2個、0個 肉、牛肉、2個、5個、10個 それを、以下のシート(2)のように集計するには、 シート(2)の各B列、C列、D列にどのような数式を埋めればいいか教えてください!! シート(2) A列、B列、C列、D列 品名、A店、B店、C店 --------------------- 果物、10個、15個、8個 野菜、5個、10個、10個 肉、2個、5個、10個

  • エクセルでで○段ずつ集計する方法を教えてください。

    エクセルで伝票印刷をするため、3段づつ集計する方法がありましたら教えてください。 たとえば、下記のsheet1のDBをsheet2へ集計する感じです。宜しくお願いします。 sheet1(DB)    A      B    C    D     購入者   品名 数量  単価 1  ああ   かか  3  100円 2  ああ    きき  6  150円  3  ああ    くく  8  100円 4  ああ    けけ  3  250円 5  いい    きき  4  150円 6  いい    けけ  6  250円 7  うう    くく  8  100円 8  ええ    きき  6  150円 sheet2(sheet1を3段づつ集計)    A   B  C   D     購入者  品名 数量  単価 1  ああ    かか  3  100円 2        きき  6  150円  3        くく  8  100円 4  小計     17  2300円  5  ああ    けけ  3  250円 6 7 8  小計        3  250円 9  いい    きき  4  150円 10 いい    けけ  6  250円 ・  ・     ・  ・   ・ ・  ・     ・  ・   ・ ・  ・     ・  ・   ・

  • エクセル集計

    エクセルで質問です。 sheet1   列   A           B 行          (名称)       (判定) 1   あいうえお        A 2   あいうえお        C 3   かきくけこ        C  4   かきくけこ        B 5   かきくけこ        B という元データがあり、みてのとおり同じ名前のものが複数あり各々で判定が違います。 次に、別のシートには(※同じシートで列をAAとしてもよいが) sheet2   列  A       B    C    D 行                判定 1             A    B    C 2   あいうえお    1         1 3   かきくけこ         2    1 という具合に、A列には名前が複数あってもひとつとしその右側に判定の種別ごとに数を記入する。 という集計表を作成したいのですが、どなたか教えてください。 ちなみにマクロはできませんのであしからず・・・・

  • エクセルで店舗の当日合計を集計したいのですが

    エクセルで店舗の当日合計を集計したいのですが SUMIFで当日の集計ができるのですがそれにプラスして店舗別の集計を計算したいのですが条件付けが いまいち分からなくて色々と試しているのですがうまくいきません。 =SUMIF(シート2!B2:B4,TODAY(),シート2!C2:C4) 例 シート1(売上げ報告) 本日(2010/5/7)として あ店舗の本日の売上げ=4000 い店舗の本日の売上げ=1500 前日の合計も出来れば出したいと考えてます シート2(売上げ入力)  A    B     C 店舗  日付   金額 あ  2010/5/6  1200 あ  2010/5/7  3000 あ  2010/5/7  1000 い  2010/5/7  1500 具体的に上記のシート例を使ってご教授願えればと思います。 ご存知の方がいらっしゃいましたら宜しくお願いします。

専門家に質問してみよう