由于我无法使用偏移量或命名范围来获得良好效果,因此我创建了这个 PPT 宏来重置数据中的数据范围 1) 任何不绘制图表的数据行的 x 轴值为零而不是 #N /A 2) 在数据表的 F1 中必须计算图表的行数,使用 countif not = 0 3) 命名图表,我使用 StackedBar1 运行宏
如果有人有更简单的解决方案,请告诉我。
Sub C_SetSourceData_StackedBar()
Dim s As Slide
Dim shp As Shape
For Each s In ActivePresentation.Slides 'moves through all slides in presentation
For Each shp In s.Shapes 'moves through each shape on slide
If shp.Name = "StackedBar1" Then ' stacked bar chart that needs source data updated is named this
Set c = shp.Chart 'set c to the chart object
Dim data As ChartData
Set data = c.ChartData 'sets data to the chartdata behind the chart
data.Activate 'need to activate the chartdat(excel sheet)
'in cell F1 the formula =countif(A1:A50,"<>0") this counts the rows that are not zero
x = data.Workbook.Worksheets(1).Range("F1").Value 'gets the last row number of data not zero
Let rng = "Sheet1!$A$1:$E$" & x ' creates the source range as a string
c.SetSourceData (rng) ' Sets the new source data range
data.Workbook.Close ' Close the chartdata workbook
End If
Next shp
Next s
End Sub