• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelのVBAで集計をしたいです。)

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

このQ&Aのポイント
  • ExcelのVBAを使用して、元データのシートから集計シートを作成する方法について説明します。
  • 元のサイズのものが使用されて売れたかを集計するには、SUMPRODUCT関数を使用できます。
  • 集計用のシートには、品名、サイズ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