VBA数据透视表下面彼此

我search了解决scheme的董事会,但我无法find类似的东西。

我试图将大约5个数据透视表放置在彼此不同的数据行之间。 我可以用前两个来完成,但代码不能从第三个开始。

不幸的是,我被要求把它们垂直放在纸上。 下面是我的一段代码。 对不起,我对VBA很陌生。 我正在使用Excel 2007。

Sheets.ADD.Name = "Pivot" ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "CTB!" & Sheets("CTB").Range("A1").CurrentRegion.Address(ReferenceStyle:=xlR1C1), Version:=xlPivotTableVersion14).CreatePivotTable _ TableDestination:="Pivot!R1C1", TableName:="PivotTable1", DefaultVersion _ :=xlPivotTableVersion14 Cells(1, 1).Select With ActiveSheet.PivotTables("PivotTable1").PivotFields("Collector") .Orientation = xlRowField .Position = 1 End With ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _ "PivotTable1").PivotFields("Transaction #"), "Count of Transaction #", xlCount ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _ "PivotTable1").PivotFields("Invoice Amount"), "Sum of Invoice Amount", xlSum ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _ "PivotTable1").PivotFields("Total Balance"), "Sum of Total Balance", xlSum ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _ "PivotTable1").PivotFields("Days Late"), "Sum of Days Late", xlSum With ActiveSheet.PivotTables("PivotTable1").PivotFields("Sum of Days Late") .Caption = "Average of Days Late" .Function = xlAverage End With Dim pt As PivotTable Set pt = Sheets("Pivot").PivotTables("PivotTable1") Application.PivotTableSelection = True pt.PivotSelect ("Sum of Total Balance"), xlDataOnly Selection.Style = "Currency" pt.PivotSelect ("Sum of Invoice Amount"), xlDataOnly Selection.Style = "Currency" pt.PivotSelect ("Average of Days Late"), xlDataOnly Selection.NumberFormat = "0" Dim LastRow As Long LastRow = Sheets("Pivot").Cells(Sheets("Pivot").Rows.Count, "A").End(xlUp).Row ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "C121+!" & Sheets("C121+").Range("A1").CurrentRegion.Address(ReferenceStyle:=xlR1C1), Version:=xlPivotTableVersion14).CreatePivotTable _ TableDestination:=Range("A" & LastRow + 2), TableName:="PivotTable2", DefaultVersion _ :=xlPivotTableVersion14 Dim pt2 As PivotTable Set pt2 = Sheets("Pivot").PivotTables("PivotTable2") pt2.TableRange1.Select With ActiveSheet.PivotTables("PivotTable2").PivotFields("Collector") .Orientation = xlRowField .Position = 1 End With ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables( _ "PivotTable2").PivotFields("Transaction #"), "Count of Transaction #", xlCount ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables( _ "PivotTable2").PivotFields("Invoice Amount"), "Sum of Invoice Amount", xlSum ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables( _ "PivotTable2").PivotFields("Total Balance"), "Sum of Total Balance", xlSum ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables( _ "PivotTable2").PivotFields("Days Late"), "Sum of Days Late", xlSum With ActiveSheet.PivotTables("PivotTable2").PivotFields("Sum of Days Late") .Caption = "Average of Days Late" .Function = xlAverage End With Application.PivotTableSelection = True pt2.PivotSelect ("Sum of Total Balance"), xlDataOnly Selection.Style = "Currency" pt2.PivotSelect ("Sum of Invoice Amount"), xlDataOnly Selection.Style = "Currency" pt2.PivotSelect ("Average of Days Late"), xlDataOnly Selection.NumberFormat = "0" ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "11+!" & Sheets("11+").Range("A1").CurrentRegion.Address(ReferenceStyle:=xlR1C1), Version:=xlPivotTableVersion14).CreatePivotTable _ TableDestination:=Range("A" & LastRow + 2), TableName:="PivotTable3", DefaultVersion _ :=xlPivotTableVersion14 Dim pt3 As PivotTable Set pt3 = Sheets("Pivot").PivotTables("PivotTable3") pt3.TableRange1.Select With ActiveSheet.PivotTables("PivotTable3").PivotFields("Collector") .Orientation = xlRowField .Position = 1 End With ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables( _ "PivotTable3").PivotFields("Transaction #"), "Count of Transaction #", xlCount ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables( _ "PivotTable3").PivotFields("Invoice Amount"), "Sum of Invoice Amount", xlSum ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables( _ "PivotTable3").PivotFields("Total Balance"), "Sum of Total Balance", xlSum ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables( _ "PivotTable3").PivotFields("Days Late"), "Sum of Days Late", xlSum With ActiveSheet.PivotTables("PivotTable3").PivotFields("Sum of Days Late") .Caption = "Average of Days Late" .Function = xlAverage End With Application.PivotTableSelection = True pt3.PivotSelect ("Sum of Total Balance"), xlDataOnly Selection.Style = "Currency" pt3.PivotSelect ("Sum of Invoice Amount"), xlDataOnly Selection.Style = "Currency" pt3.PivotSelect ("Average of Days Late"), xlDataOnly Selection.NumberFormat = "0" 

任何意见将不胜感激!

看起来你每次要插入一个新的pivotTable都必须更新你的LastRowvariables。 然后下一个pivotTable将被插入到最后一个下面的两行开始的区域…

在插入第二个pivotTable之前设置LastRowvariables,但是在插入pivotTable3等之前,必须重置它以读取当前最后一行。