【发布时间】:2018-07-30 17:01:43
【问题描述】:
我创建了一个 VBA 脚本,用于删除现有数据表(名为 Data)并将其替换为新版本(具有相同的标题并名为 Data)。我有很多依赖此表的公式和图表,并且想知道如何在更改表后保持引用正常工作(以便在更新数据表时自动更新数据透视表、公式和数组公式)。
以下是我遇到的问题的一些图片:
【问题讨论】:
标签: excel excel-formula auto-update
我创建了一个 VBA 脚本,用于删除现有数据表(名为 Data)并将其替换为新版本(具有相同的标题并名为 Data)。我有很多依赖此表的公式和图表,并且想知道如何在更改表后保持引用正常工作(以便在更新数据表时自动更新数据透视表、公式和数组公式)。
以下是我遇到的问题的一些图片:
【问题讨论】:
标签: excel excel-formula auto-update
可能发生的情况是,一旦您删除了表格(根据您对问题的定义),图表的链接就会丢失。
与其删除表(作为一个整体),不如删除单个数据行:
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
否则,这应该使图表的表引用保持不变。仅供参考:因为数据已更新,您可能需要调用以刷新任何相关的数据透视表和图表,否则可能不清楚数据已更新......我可能会在数据集后调用刷新一次已被清除,然后在更新后再次...这将清楚地表明枢轴/图表已更新。
祝你好运。
【讨论】:
使用动态命名范围作为数据透视源。然后只删除标题下方的数据。不要覆盖或更改标题
或者使用您现有的表格,但再次保留标题并仅从下方删除行(例如ActiveSheet.ListObjects(1).DataBodyRange.Delete
) .如果您删除整个表,则任何相关公式都会出错,因为引用不再有效。该表已不存在。
或者拥有可以为您创建一切的代码。
【讨论】:
那么,为什么不通过使用“xyxyxy”编辑/替换“=”将所有公式更改为文本,然后对您的数据执行任何操作,因为一切都只是文本。
完成后,将“xyxyxy”替换为“=”,公式再次起作用 - 我的工作表可以正常工作,而且我有很多公式。
【讨论】: