既然不能使用偏移或命名范围,效果良好,我创建这个PPT宏重置数据范围在我的数据 1)数据的任何行不是要被绘制具有x轴和零值不#N /中数据表的F1甲 2)具有数行以图表的数量,使用COUNTIF不是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