Excel(2007)中的图表无法更新

20

我有一个包含图表(聚合柱状图)的Excel文档(2007),它取决于包含计算值的单元格的数据系列。

计算值从未直接更改,但只会因工作表中其他单元格的更改而更改。

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

我可以通过保存/关闭文件,切换其中一个设置(例如:反转x/y轴并再次设置回来),或重新选择数据系列来更新图表。

我在网上找到的每个解决方案都不起作用。

  • 是的,我已经将计算方式设置为自动
  • Ctrl+Alt+F9 可以很好地更新所有内容,除了图表
  • 我已经多次在不同的计算机上重新创建了图表
  • 我尝试过使用VBA脚本,例如:

    Application.Calculate
    Application.CalculateFull
    Application.CalculateFullRebuild
    ActiveWorkbook.RefreshAll
    DoEvents

这些都不能更新或刷新图表。

我注意到如果我覆盖数据系列,输入实际数字而不是计算值,它将更新图表-好像Excel不想识别计算中的更改。

有没有人遇到过这种情况?或者知道我该怎么解决这个问题吗?谢谢


你使用的是哪种类型的图表? - Stewbob
啊,是的,忘了提到了,它是一个集群柱形图。 - samJL
3
适合放在SuperUser上,与编程无关。 - Ken White
检查您的状态栏是否显示消息“计算”。请记得在回复评论时加上@用户名。 - Dr. belisarius
1
这是我几个月前在一篇帖子中描述的同一个问题吗?:MS Excel图表在数据更改时不会自动更新 - Adam
这个问题在5年前就被提出了,但在Excel 2016中仍未得到解决。难以置信。 - Kit Johnson
35个回答

0

我遇到了和发帖者同样的问题。基本上,我在运行一个仪表板,里面有很多命名区域,这些区域填充了一些UDF返回的值。在仪表板上,有一些饼图,它们的数据系列绑定了包含这些命名区域的单元格(如果数据系列目标单元格直接包含UDF,则绕过了命名区域也会出现问题)。

我更改了一个包含日期范围等内容的单元格值以便以其为基础生成仪表板,然后命名区域和UDF被强制计算。然而,饼图没有更新——由于某种原因,其他类型的图表是可以更新的。顺便说一下,这些是图表对象,而不是图表工作表。总之,让我们来看看解决方案:

我不想可见地改变图表标题或一些其他方面,而且我注意到这并没有始终更新我的图表。有时候我第一次触发计算时馅饼会更新,但在随后的计算中馅饼就不会更新了。然而,我确实注意到每次在代码中做出更改时我的仪表板都能正常工作。所以:

解决方案:

With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule

     .AddFromString "'test"
     .DeleteLines 1

End With

如果您正在使用Workbook模块(在这种情况下我没有),只需创建一个新模块并引用即可。

0
我曾经遇到过类似的问题——图表似乎无法更新。我尝试了这个帖子中几乎所有的方法,但都没有成功。最后我终于意识到,我复制和粘贴的图表与源数据相连,这就是为什么它们都显示相同结果的原因。
在你进行其他操作之前,请确保你正在复制和粘贴图片...

0

我自己花了半天时间解决了这个问题。

我有一个宏,用于更改图表的数据值。在Excel 2003中一切正常,但在Excel 2007中,图表似乎失去了与其数据的连接,尽管手动更改两列的数据值会触发重新计算。

我的解决方案是在更改数据之前将活动工作表上的所有图表设为不可见,然后再将它们设为可见,并调用图表刷新以确保万无一失(只有可见图表似乎存在此更新问题)。

这对我来说有效,并且还处理了类似的图表和图表对象问题。刷新可能不是必要的-需要进行更多测试。

Dim chrt As Chart
Dim chrtVis As XlSheetVisibility
Dim sht As Worksheet
Dim bChartVisible() As Boolean
Dim iCount As Long

Dim co As ChartObject

On Error Resume Next

Set chrt = ActiveChart

If Not chrt Is Nothing Then
        chrtVis = chrt.Visible
        chrt.Visible = xlSheetHidden
        End If

Set sht = ActiveSheet

If Not sht Is Nothing Then
        ReDim bChartVisible(1 To sht.ChartObjects.Count) As Boolean
        iCount = 1
        For Each co In sht.ChartObjects
            bChartVisible(iCount) = co.Visible
            co.Visible = False
            iCount = iCount + 1
            Next co
        End If

执行宏操作以更改数据

If Not sht Is Nothing Then
        iCount = 1
        For Each co In sht.ChartObjects
            co.Visible = bChartVisible(iCount)
            co.Chart.Refresh
            iCount = iCount + 1
        Next co
        End If

If Not chrt Is Nothing Then
        chrt.Visible = chrtVis 
        chrt.Refresh
        If chrt.Visible Then
            chrt.Select
            End If
        End If

On Error GoTo 0

0

对我有效的方法是使用宏在数据表中插入/删除列以更新图表的数据选择。

我发现这是最快速的修复方法。


0

我刚遇到了同样的问题,也发现只有在输入错误数据(字符而不是数字)时,该行才会显示出来。这导致该行出现,但改回有效数据后又消失了。

我发现的是,如果我双击该行(显示错误数据),它会告诉我它是由于某种原因位于次要轴上。将其更改为主要轴解决了我的问题。


0

更改源数据的值时,图表未相应更新。只需关闭所有Excel实例并重新启动,问题即可消失。


0

这可能看起来非常基础,但我刚刚尝试了在电子表格上手动计算图表(通过按F9键),它奏效了!它的VBA代码非常简单:

Calculate

;)


0
今天我遇到了一个类似的问题,我的2010文件中有大量的公式和几个数据库连接。图表轴没有更新引用范围内的隐藏列,与此链中的其他轴类似,并且标签显示动态数据的月份和年份“MMM-YY”。我尝试了所有列出的解决方案,除了VBA选项,因为我更喜欢不使用代码来解决。
我通过将我的日期(轴标签)封装在TEXT公式中来解决了这些问题,如下所示:=TEXT(A10,“MMM-YY”)。当值改变时,一切都立即更新。又是美好的一天!!!
从阅读上面其他贡献者的问题,我开始认为图表特别是DATE数据类型存在问题,因此使用TEXT函数将值转换为文本解决了我的问题。希望这也能帮助到您。只需更改双引号内的格式(TEXT函数的第二个参数)以适应您的需求即可。

0

我尝试了几乎所有提出的解决方案,但由于都不能在我的情况下起作用,因此我也会在这里分享我的见解。希望能对其他人有所帮助。

关于这个问题的共识似乎是我们需要以某种方式强制Excel重新绘制图形,因为它没有在应该绘制时进行绘制。

我的解决方案是删除X轴数据并将其替换为空,然后再改为所需内容。以下是我的代码:

With wsReport
    .Activate
    .ChartObjects(1).Activate
    ActiveChart.FullSeriesCollection(1).XValues = "=" 'Kill data here
        .Range("A1").Select 'Forwhatever reason a Select statement was needed
        .ChartObjects(1).Activate
        ActiveChart.FullSeriesCollection(1).XValues = "=tblRef[Secs]"
End With
End Sub

0

图表不会“感觉到”通过宏直接插入源单元格中的值的更改。您必须将值发送到图表单元格之外,然后使用类似于此代码的代码。

Worksheets("sheet1").Range("A1:K1")=Worksheets("sheet2").Range("A4:K4").Value


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接