VBA同一項目をひとまとめにして別シートに整理された表を作成したい
Sheet1~n
【 E 】 F G 【H 】 I
種別 単価 合計 種別B 個数
4 ア 300 100,000,000 (1) 3
5 イ 300 100,000,000 (2) 4
6 ア 300 100,000,000 (1) 5
7 イ 300 100,000,000 (2) 6
8 ウ 300 100,000,000 (3) 5
Sheet1~nまで同じ形式の上記の表があり、
Sheetごとの、E列の種別A=ア・イ・それ以外で、3つに分類し、
【F列】種別B(項目複数)ごとのF・G・I列の合計を出すマクロを作りたいのですが
まだまだレベルが低すぎてわかりません。
Sheetまとめの表
Sheet1
種別A 種別B F合計 G合計 I合計
ア (1)
ア (2)
ア (3)
イ (1)
イ (2)
以外 (1)
(2)
Sheet1
種別A 種別B F合計 G合計 I合計
ア (1)
ア (2)
ア (3)
イ (1)
イ (2)
以外 (1)
(2)
Sheet1
種別A 種別B F合計 G合計 I合計
ア (1)
ア (2)
ア (3)
イ (1)
イ (2)
以外 (1)
(2)
Sheet2・・と続く。
ネットで見つけたコードですが複雑すぎてどこを変えればいいのかわかりません・・・(><)
Option Explicit
Sub てすと()
Dim MyDic As Object
Dim MyA As Variant, MyAry() As Variant
Dim i As Long, n As Long, k As Long, x As Long
Set MyDic = CreateObject("Scripting.Dictionary")
With Worksheets("Sheet1")
MyA = .Range("A1", .Range("A65536").End(xlUp)).Resize(, 4).Value
End With
For i = 1 To UBound(MyA, 1)
If Not MyDic.Exists(MyA(i, 1) & MyA(i, 2)) Then
k = k + 1
ReDim Preserve MyAry(1 To UBound(MyA, 2), 1 To k)
MyDic.Add MyA(i, 1) & MyA(i, 2), k
For n = LBound(MyA, 2) To UBound(MyA, 2)
MyAry(n, k) = MyA(i, n)
Next
Else
x = MyDic(MyA(i, 1) & MyA(i, 2))
For n = 3 To UBound(MyA, 2)
MyAry(n, x) = MyAry(n, x) + MyA(i, n)
Next
End If
Next
With Worksheets("Sheet2")
.Range("A1").CurrentRegion.ClearContents
.Range("A1").Resize(UBound(MyAry, 2), 4).Value = Application.Transpose(MyAry)
End With
Erase MyA, MyAry
End Sub
お礼
回答ありがとうございます! 並び替えの前に、アクティブシートを保持しておくのですね! 全く思いつきもしませんでした…orz 回答頂き、ありがとうございます! 良いプログラムを組めるようにがんばります!