【问题标题】:Deleting and reuploading data table without references having #REF issues [Excel]删除和重新上传数据表而没有引用有 #REF 问题 [Excel]
【发布时间】:2018-07-30 17:01:43
【问题描述】:

我创建了一个 VBA 脚本,用于删除现有数据表(名为 Data)并将其替换为新版本(具有相同的标题并名为 Data)。我有很多依赖此表的公式和图表,并且想知道如何在更改表后保持引用正常工作(以便在更新数据表时自动更新数据透视表、公式和数组公式)。

以下是我遇到的问题的一些图片:

数据透视表不更新新数据

数据转为#REF!删除数据表后

【问题讨论】:

    标签: excel excel-formula auto-update


    【解决方案1】:

    可能发生的情况是,一旦您删除了表格(根据您对问题的定义),图表的链接就会丢失。

    与其删除表(作为一个整体),不如删除单个数据行:

    Sub RemoveTableBodyData()
    
    Dim tbl As ListObject
    
    Set tbl = ActiveSheet.ListObjects("Table1")
    
    'Delete Table's Body Data
      If tbl.ListRows.Count >= 1 Then
        tbl.DataBodyRange.Delete
      End If
    
    End Sub
    

    来自:The VBA Guide To ListObject Excel Tables

    否则,这应该使图表的表引用保持不变。仅供参考:因为数据已更新,您可能需要调用以刷新任何相关的数据透视表和图表,否则可能不清楚数据已更新......我可能会在数据集后调用刷新一次已被清除,然后在更新后再次...这将清楚地表明枢轴/图表已更新。

    祝你好运。

    【讨论】:

    • 这正是正在发生的事情。是否有可能使引用是绝对的(这样当替换表时,只要名称保持不变,我就可以更新数据和数据透视表、图表和公式将引用新表)?
    • 我在表格和简单图表上尝试了一个快速实验,并且还做了一些额外的检查。在我的测试中,我将表命名为 SAMPTABLE,并使用了它以及字段 [名称] 引用,但它没有工作,绝对表引用仍然存在。显然,在图表中使用表格引用是有意识的决定:mrexcel.com/forum/mrexcels-products-books-cds-podcasts/…。向表格添加行(和列!)会自动更新图表,无需额外工作(或脑损伤)。
    【解决方案2】:

    使用动态命名范围作为数据透视源。然后只删除标题下方的数据。不要覆盖或更改标题

    或者使用您现有的表格,但再次保留标题并仅从下方删除行(例如ActiveSheet.ListObjects(1).DataBodyRange.Delete ) .如果您删除整个表,则任何相关公式都会出错,因为引用不再有效。该表已不存在。

    或者拥有可以为您创建一切的代码。

    【讨论】:

      【解决方案3】:

      那么,为什么不通过使用“xyxyxy”编辑/替换“=”将所有公式更改为文本,然后对您的数据执行任何操作,因为一切都只是文本。

      完成后,将“xyxyxy”替换为“=”,公式再次起作用 - 我的工作表可以正常工作,而且我有很多公式。

      【讨论】:

      • 这是一个有趣的方法。你有随附的代码吗?
      • 没有通过 vba 完成 - 但没有理由你不能... ...
      • 好的。想我会在我做之前检查一下。现在就试试看。
      • 我有信心,因为它适用于我,但在副本上做......我喜欢备份这个词......
      猜你喜欢
      • 2021-01-16
      • 1970-01-01
      • 1970-01-01
      • 2012-03-01
      • 2021-03-20
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      相关资源
      最近更新 更多