我创建了一个VBA脚本,该脚本删除了一个现有的数据表(名为Data)并将其替换为一个新版本(具有相同的标头,名为Data)。我有很多依赖此表的公式和图表,并且想知道更改表后如何保持引用正常工作(以便在更新数据表时自动更新数据透视表,公式和数组公式)。>
下面是我遇到的问题的一些图片:
答案 0 :(得分:2)
可能发生的情况是,一旦删除表格(根据问题的定义),该图表的链接就会丢失。
而不是删除表(整体上),而是删除单个数据行:
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
否则,这应使表格的表引用保持完整。仅供参考:由于数据已更新,因此您可能需要进行调用以刷新任何相关的数据透视表和图表,否则可能无法清除数据已更新的数据...我可能会在数据集设置后进行调用以刷新一次已被清除,然后在更新后再次...这将使数据透视/图表已更新。
祝你好运。
答案 1 :(得分:1)
使用动态命名范围作为数据透视表源。然后仅删除标题下的数据。请勿覆盖或更改标题
或者使用您现有的表,但再次保留标题,仅从下面删除行(例如ActiveSheet.ListObjects(1).DataBodyRange.Delete
)。如果删除整个表,则任何依赖公式都会出错,因为引用不再有效。该表不再存在。
或者拥有可以为您创建所有内容的代码。
答案 2 :(得分:1)
所以,为什么不通过使用edit / replace“ =”和“ xyxyxy”来将所有公式更改为文本,然后对数据进行任何处理,因为一切都只是文本。
完成后,将“ xyxyxy”替换为“ =”,公式将再次起作用-适用于我的工作表,并且其中包含很多公式。