既然不能使用偏移或命名範圍,效果良好,我創建這個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