添加数据并使用 VBA Excel 格式化数据透视图
Add data and format Pivot Chart using VBA Excel
我正在努力格式化 Pivotchart
并使用 VBA 向图表添加数据。我已经设置了代码来创建工作正常的数据透视图,我可以手动格式化和添加数据,但是每当我尝试模仿宏记录器或我在网上阅读的任何内容时,它似乎都失败了 'Application-defined or object defined error.'
我试图更改代码以将 objChart
更改为 ActiveChart
试图模仿我在使用宏记录器时所做的操作,但这仍然失败。在我最初的尝试失败后,我尝试了录音机。
我也未能使 ChartTitle.Add
起作用,因此我可以修改可见的标题(目前没有显示任何标题)。
ActionTracker.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
Actions, Version:=6).CreatePivotTable _
TableDestination:=CtyDrng, TableName:="Country Overview", _
DefaultVersion:=6
Dim pt As PivotTable
Dim PtRange As Range
Dim ChrtRange As Range
Dim objChart As Chart
Dim chtSeries As SeriesCollection
Set pt = CountryDash.PivotTables("Country Overview")
Set PtRange = pt.TableRange1
With PtRange
Set ChrtRange = .Offset(, 1).Resize(1, .Columns.Count - 1)
Set ChrtRange = Union(ChrtRange, .Offset(.Rows.Count - 1, 1).Resize(1, .Columns.Count - 1))
End With
Set objChart = CountryDash.Shapes.AddChart.Chart
With objChart
.SetSourceData ChrtRange
.ChartType = xlBarStacked100
.ShowAllFieldButtons = True
' .ChartTitle.Add
'.ChartTitle.Select
' .ChartTitle.Text = "Country Overview"
End With
With objChart.PivotLayout.PivotTable.PivotFields("Country")
.Orientation = xlRowField
.Position = 1
End With
With objChart.PivotLayout.PivotTable.PivotFields("Region")
.Orientation = xlRowField
.Position = 2
End With
With objChart.PivotLayout.PivotTable.PivotFields("Overdue")
.Orientation = xlRowField
.Position = 3
End With
objChart.PivotLayout.PivotTable.AddDataField objChart.PivotLayout. _
PivotTable.PivotFields("Overdue"), "Overdue", xlCount
我希望代码能够按国家/地区创建数据透视图,然后显示 3 个不同类别的逾期操作 'Implemented'、'In Progress' 和 'Overdue'。
请原谅,如果这不完全适合,但我没有尝试使用 adddatafield
,我认为这是导致问题的原因,因为您要添加到图表,而不是数据透视缓存。
您可以通过关联数据透视缓存中已有的数据透视字段(由 header 调用)来避免这种情况:
With pivotsheet.PivotTables("CHART_NAME")
'Insert Row Fields
With .PivotFields("Country")
.Orientation = xlRowField
End With
'Insert Data Field
With .PivotFields("Overdue")
.Orientation = xlDataField
.Function = xlCount
.NumberFormat = "#,##0"
.Name = "Number Overdue"
End With
End With
关于向数据透视表添加名称的观点table,想想你是如何生成的...不要只是附加事物,在它们发生时采取行动,这样:
'Define Pivot Cache
lrs = source.Cells(source.Rows.Count, 1).End(xlUp).Row
Set pc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="SOURCE_SHEET!A1:B" & lrsource)
'Insert Blank Pivot Table
Set pt = pc.CreatePivotTable(TableDestination:=pivotsheet.Cells(1, 1), TableName:="CHART_NAME")
添加数据透视表后table开始添加页面字段、列字段、行和数据字段。
我正在努力格式化 Pivotchart
并使用 VBA 向图表添加数据。我已经设置了代码来创建工作正常的数据透视图,我可以手动格式化和添加数据,但是每当我尝试模仿宏记录器或我在网上阅读的任何内容时,它似乎都失败了 'Application-defined or object defined error.'
我试图更改代码以将 objChart
更改为 ActiveChart
试图模仿我在使用宏记录器时所做的操作,但这仍然失败。在我最初的尝试失败后,我尝试了录音机。
我也未能使 ChartTitle.Add
起作用,因此我可以修改可见的标题(目前没有显示任何标题)。
ActionTracker.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
Actions, Version:=6).CreatePivotTable _
TableDestination:=CtyDrng, TableName:="Country Overview", _
DefaultVersion:=6
Dim pt As PivotTable
Dim PtRange As Range
Dim ChrtRange As Range
Dim objChart As Chart
Dim chtSeries As SeriesCollection
Set pt = CountryDash.PivotTables("Country Overview")
Set PtRange = pt.TableRange1
With PtRange
Set ChrtRange = .Offset(, 1).Resize(1, .Columns.Count - 1)
Set ChrtRange = Union(ChrtRange, .Offset(.Rows.Count - 1, 1).Resize(1, .Columns.Count - 1))
End With
Set objChart = CountryDash.Shapes.AddChart.Chart
With objChart
.SetSourceData ChrtRange
.ChartType = xlBarStacked100
.ShowAllFieldButtons = True
' .ChartTitle.Add
'.ChartTitle.Select
' .ChartTitle.Text = "Country Overview"
End With
With objChart.PivotLayout.PivotTable.PivotFields("Country")
.Orientation = xlRowField
.Position = 1
End With
With objChart.PivotLayout.PivotTable.PivotFields("Region")
.Orientation = xlRowField
.Position = 2
End With
With objChart.PivotLayout.PivotTable.PivotFields("Overdue")
.Orientation = xlRowField
.Position = 3
End With
objChart.PivotLayout.PivotTable.AddDataField objChart.PivotLayout. _
PivotTable.PivotFields("Overdue"), "Overdue", xlCount
我希望代码能够按国家/地区创建数据透视图,然后显示 3 个不同类别的逾期操作 'Implemented'、'In Progress' 和 'Overdue'。
请原谅,如果这不完全适合,但我没有尝试使用 adddatafield
,我认为这是导致问题的原因,因为您要添加到图表,而不是数据透视缓存。
您可以通过关联数据透视缓存中已有的数据透视字段(由 header 调用)来避免这种情况:
With pivotsheet.PivotTables("CHART_NAME")
'Insert Row Fields
With .PivotFields("Country")
.Orientation = xlRowField
End With
'Insert Data Field
With .PivotFields("Overdue")
.Orientation = xlDataField
.Function = xlCount
.NumberFormat = "#,##0"
.Name = "Number Overdue"
End With
End With
关于向数据透视表添加名称的观点table,想想你是如何生成的...不要只是附加事物,在它们发生时采取行动,这样:
'Define Pivot Cache
lrs = source.Cells(source.Rows.Count, 1).End(xlUp).Row
Set pc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="SOURCE_SHEET!A1:B" & lrsource)
'Insert Blank Pivot Table
Set pt = pc.CreatePivotTable(TableDestination:=pivotsheet.Cells(1, 1), TableName:="CHART_NAME")
添加数据透视表后table开始添加页面字段、列字段、行和数据字段。