我有一个Excel文档(2007),其中有一个图表(聚集列),它从包含计算值的单元格中获取数据系列
计算值永远不会直接更改,而只是作为工作表中其他单元格更改的结果
当我更改工作表中的其他单元格时,将重新计算数据系列单元格,并显示新值-但基于此数据系列的图表拒绝自动更新
我可以通过保存/关闭或切换其中一个设置(例如反转x/y轴,然后将其放回原处),或通过重新选择Data Series来更新图表
我在网上找到的所有解决方案都不起作用
Application.Calculate
Application.CalculateFull
Application.CalculateFullRebuild
ActiveWorkbook.RefreshAll
DoEvents
这些操作都不会更新或刷新图表
我确实注意到,如果我在我的数据系列上键入实际数字而不是计算,它将更新图表-就好像Excel不想识别计算中的更改
以前有没有人经历过这种情况,或者知道我可以做些什么来解决这个问题?谢谢
发布于 2011-03-31 07:38:48
我也遇到过同样的问题--不知道为什么,当它发生时,我让图表强制更新的唯一方法是在图表定义本身中更改一些东西,这可以很容易地通过VBA完成,如下所示:
Dim C As ChartObject: Set C = Me.ChartObjects("chart name")
C.Chart.ChartTitle.Text = C.Chart.ChartTitle.Text + "1"
也许会有一个更好的答案来解决这个问题--但我认为这可能会有所帮助。在处理工作表时,我会对图表的一部分(或全部内容)执行快速的Ctrl-X、Ctrl-V组合键,以强制图表更新。
发布于 2012-07-20 22:21:07
这是我发现的唯一可以持续更新图表的东西。它削减了问题的根本原因(我假设):系列数据被缓存到图表中。通过强制图表重新评估序列,我们正在清除缓存。
' Force the charts to update
Set sht = ActiveSheet
For Each co In sht.ChartObjects
co.Activate
For Each sc In ActiveChart.SeriesCollection
sc.Select
temp = sc.Formula
sc.Formula = "=SERIES(,,1,1)"
sc.Formula = temp
Next sc
Next co
发布于 2011-08-27 06:13:06
我在通过VBA
生成1000+图形时遇到了这个问题。我生成了这些图,并为它们的序列分配了一个范围。但是,当工作表重新计算时,图表不会随着数据范围值的变化而更新。
Solution -->我在生成图形的For...Next循环之前关闭了WrapText,然后在循环之后再次打开它。
Workbooks(x).Worksheets(x).Cells.WrapText=False
然后..。
Workbooks(x).Worksheets(x).Cells.WrapText=True
这是一个很好的解决方案,因为它可以立即更新1000+图形,而无需遍历所有图形并单独更改某些内容。
此外,我也不太确定为什么这样做;我想当WrapText更改数据范围的一个属性时,它会更新图形,尽管我没有关于这方面的文档。
https://stackoverflow.com/questions/4902703
复制相似问题