Excel图表不会更新

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (20)

我有一个Excel文档(2007),它的图表(群集列)从包含计算值的单元格中获取其数据序列

计算值从不直接变化,而只是由于工作表中的其他单元格发生了更改。

当我更改工作表中的其他单元格时,将重新计算数据系列单元格并显示新值,但基于此数据系列的图表拒绝自动更新。

我可以通过保存/关闭或切换其中一个设置(例如倒转x/y轴,然后将其放回)或重新选择数据系列来更新图表。

我在网上找到的每一个解决方案都行不通

  • 是的,我把计算设置为自动
  • Ctrl+Alt+F9除了图表之外,所有更新都很好
  • 我已经在不同的计算机上重新绘制了几次图表。
  • 我尝试过VBA脚本,例如:Application.CalculateApplication.CalculateFullApplication.CalculateFullRebuildActiveWorkbook.RefreshAllDoEvents

所有这些都不会更新或刷新图表。

我确实注意到,如果我输入数据序列,实际数字而不是计算,它将更新图表--就好像Excel不想识别计算中的变化一样

以前有没有人经历过这种情况,或者知道我会怎么做来解决这个问题?谢谢

提问于
用户回答回答于

我遇到了同样的问题--不知道为什么,当发生这种情况时,我让图表强制更新的唯一方法是更改图表定义本身中的某些内容,这可以通过VBA轻松地完成,如以下所示:

Dim C As ChartObject: Set C = Me.ChartObjects("chart name")
C.Chart.ChartTitle.Text = C.Chart.ChartTitle.Text + "1"

也许有一个更好的答案能找到问题的根源--但我认为这可能会有所帮助。在工作表上,我会在图表的一块(或整个东西)上做一个快速的Ctrl-X,Ctrl-V,以迫使图表更新。

用户回答回答于

这是我发现的唯一能不断更新图表的东西。它消除了问题的根源(我猜想):系列数据正在图表中缓存。通过强制图表重新评估系列,我们正在清除缓存。

' 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

扫码关注云+社区