同一张Excel表中的两张数据透视表
我已经在源数据的同一张表中创建了一张数据透视表。现在,我想在同一张表中使用相同的数据源创建第二个数据透视表,但在透视表内(当然)使用不同的打印数据。我一直收到一个错误,因为它表示数据透视表不能覆盖另一个数据透视表。但是,他们的方式我选择了数据透视表创建的范围,它们不会互相覆盖。我也手动测试过。另外,如果我记录过程,它只是使用源数据的准确参考,我不想使用该参数,因为每天都会更改lastrow和lastcolumn。为了提醒一下,这个宏很适合创建第一个表格。第二个表是问题。下面,我将提供我现在的代码。同一张Excel表中的两张数据透视表
Dim DSheet As Worksheet
Dim PCache As PivotCache
Dim PTable1 As PivotTable
Dim PTable2 As PivotTable
Dim PRange As Range
Application.DisplayAlerts = True
Set DSheet = Worksheets("Budget_Report")
Set PRange = DSheet.Range(Cells(1, 53), Cells.SpecialCells(xlCellTypeLastCell))
Set PCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=PRange)
Set PTable1 = PCache.CreatePivotTable(TableDestination:=DSheet.Cells(4, 1), TableName:="PivotTable1")
Set PTable2 = PCache.CreatePivotTable(TableDestination:=DSheet.Cells(17, 2), TableName:="PivotTable2")
With ActiveSheet.PivotTables("PivotTable1")
With .PivotFields("T-Lane")
.Orientation = xlRowField
.Position = 1
.Subtotals(1) = True
.Subtotals(1) = False
End With
With .PivotFields("Monthly Cost FCST")
.Orientation = xlDataField
.Position = 1
.Function = xlAverage
.Caption = "Monthly Cost Forecast"
End With
End With
With ActiveSheet.PivotTables("PivotTable2")
With .PivotFields("Oran")
.Orientation = xlRowField
.Position = 1
.Subtotals(1) = True
.Subtotals(1) = False
End With
With .PivotFields("Monthly Cost FCST")
.Orientation = xlDataField
.Position = 1
.Function = xlAverage
.Caption = "Monthly Cost Forecast"
End With
End With
当插入第一枢轴表和填充的第一个之前插入另一个,所述第一枢转表的空的透视表范围占据目的地小区[DSheet.Cells(17,2)]的第二数据透视表。
我想你应该插入第一个数据透视表并填充它,然后再插入另一个并填充它。
看看是否可以解决您的问题。
Dim DSheet As Worksheet
Dim PCache As PivotCache
Dim PTable1 As PivotTable
Dim PTable2 As PivotTable
Dim PRange As Range
Application.DisplayAlerts = True
Set DSheet = Worksheets("Budget_Report")
Set PRange = DSheet.Range(Cells(1, 53), Cells.SpecialCells(xlCellTypeLastCell))
Set PCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=PRange)
Set PTable1 = PCache.CreatePivotTable(TableDestination:=DSheet.Cells(4, 1), TableName:="PivotTable1")
With ActiveSheet.PivotTables("PivotTable1")
With .PivotFields("T-Lane")
.Orientation = xlRowField
.Position = 1
.Subtotals(1) = True
.Subtotals(1) = False
End With
With .PivotFields("Monthly Cost FCST")
.Orientation = xlDataField
.Position = 1
.Function = xlAverage
.Caption = "Monthly Cost Forecast"
End With
End With
Set PTable2 = PCache.CreatePivotTable(TableDestination:=DSheet.Cells(17, 2), TableName:="PivotTable2")
With ActiveSheet.PivotTables("PivotTable2")
With .PivotFields("Oran")
.Orientation = xlRowField
.Position = 1
.Subtotals(1) = True
.Subtotals(1) = False
End With
With .PivotFields("Monthly Cost FCST")
.Orientation = xlDataField
.Position = 1
.Function = xlAverage
.Caption = "Monthly Cost Forecast"
End With
End With
,这是完美的作品! –
很高兴它的工作。:) – sktneer
@sktneer只是好奇你为什么你没有使用你的'Pivot'对象后,你设置它们?而不是'With ActiveSheet.PivotTables(“PivotTable1”)''你可以使用'With PTable1',对于“PivotTable2”也是一样的 –
“重要” 如果你在Excel中 工作表中定义多个数据透视表,是可能生成的表可以增长和重叠 彼此如果Activity返回一个大数据集。在这种情况下,当您刷新数据时,您将收到“数据透视表报表不能重叠另一个 数据透视表”。您可以通过将数据透视表之间的添加列或行添加到 来更正此错误,从而允许这些表的增长不会重叠。
如果没有看到您的数据,很难判断数据透视表是否或如何重叠。为什么使用代码来创建数据透视表?数据透视表的想法是只有数据发生变化,因此数据透视表定义保持不变,您只需刷新它们即可。另外,请考虑使用Excel表对象作为数据透视表的源,然后数据源将动态增长和减少。有关此主题的书籍已经撰写,因此您可能希望对数据透视表和动态数据源进行更多的研究和学习。 – teylyn
@teylyn感谢您的反馈!我想自动创建它们,因为这个宏将每天在不同的工作簿中运行。 (我会复制粘贴它每天到其他工作表! –