我搜索了解决方案的董事会,但我无法找到任何类似的东西。VBA数据透视表彼此之间
我试图放置大约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"
任何意见将不胜感激!
“代码是不是从第三工作”你得到一个错误?意想不到的结果?你期望什么?你有问题,或者只是在你的下午填写我们的信息? – Greg
如果不清楚,我很抱歉。我得到“数据透视表报告不能重叠另一个数据透视表报告”。我希望它只是在第二个数据透视表下插入第三个数据透视表。 –