- ベストアンサー
ExcelのVBAでデータ集計をする方法
- ExcelのVBAを使用して、元データのシートから集計シートを作成する方法について説明します。
- 元のサイズのものが使用されて売れたかを集計するには、SUMPRODUCT関数を使用できます。
- 集計用のシートには、品名、サイズ1、元のサイズ、売り上げた量の合計を表示します。
- みんなの回答 (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
お礼
質問の仕方が悪く、お手間をかけさせ、申し訳ありませんでした。 いただいたもので実行し、自分のやりたいものにも反映し、無事出来上がりました。 ありがとうございました。