如何更改在数据透视表中选择的源数据范围以用于数据透视表

时间:2015-05-07 09:02:50

标签: excel excel-vba pivot-table vba

目前我有我的数据透视表,看起来像这样

Pivot Table which is used

目前,我创建的其中一个图表会在xlPie图表中添加一个系列,但是它会选择Range("C6:C12")中的数据,我希望它选择最后一列,Range("F6":"F12")为我们想要的是总价值,而不仅仅是一个月的价值。

这是目前为参考而创建的饼图:

Pie Chart which I generate

要创建此图表,我在此图表所在的工作表中使用以下代码:

Dim shpPie As Shape
Set shpPie = ActiveSheet.Shapes.AddChart(xlPie)

shpPie.Chart.SetSourceData Source:=ActiveWorkbook.Sheets("Pivot Table").PivotTables(1).TableRange1, _
                      PlotBy:=xlColumns
With Range("A1:F32")
    shpPie.Left = .Left
    shpPie.Top = .Top
    shpPie.Width = .Width
    shpPie.Height = .Height
End With
With shpPie.Chart.PivotLayout.PivotTable
    .PivotFields("Marketspace").Orientation = xlRowField 'Row Field is the Axis Fields
    .PivotFields("Page Name").Orientation = xlRowField
    .PivotFields("Year").Orientation = xlColumnField
    .PivotFields("Month").Orientation = xlColumnField 'Column Field is the Legend Fields
End With

我认为问题出在这一行:

 shpPie.Chart.SetSourceData Source:=ActiveWorkbook.Sheets("Pivot Table").PivotTables(1).TableRange1, _
                          PlotBy:=xlColumns

在excel中,该行为我提供了以下源数据选择:

=SERIES('Pivot Table'!$C$3:$C$5,'Pivot Table'!$A$6:$B$14,'Pivot Table'!$C$6:$C$14,1)

有没有人知道我能做些什么来让它选择第二列,或者其他技术来做到这一点?我希望它选择2015年总数不是1月数据。

我尝试更改从以下位置生成的源代码行:

=SERIES('Pivot Table'!$C$3:$C$5,'Pivot Table'!$A$6:$B$14,'Pivot Table'!$C$6:$C$14,1) 

为:

=SERIES('Pivot Table'!$C$3:$C$5,'Pivot Table'!$A$6:$B$14,'Pivot Table'!$F$6:$F$14,1)

只是为了看看会发生什么,但它不允许我应用这种改变。

我是VB的新手,所以我可能会误解这些数据透视表/图表是如何工作的

1 个答案:

答案 0 :(得分:0)

无需提取数据来创建新图表,只需复制包含pivottable的工作表(如Rory所建议),从复制的pivottable中的值中排除“Month”字段。

从代码中排除以下行

.PivotFields("Month").Orientation = xlColumnField 'Column Field is the Legend Fields

然后运行复制的工作表的程序