删除和重新上传数据表而没有引用出现#REF问题[Excel]

时间:2018-07-30 17:01:44

标签: excel excel-formula auto-update

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

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

数据透视表未使用新数据更新 Pivot table not updating average time value

数据转向#REF!删除数据表后 Formulas not updating

3 个答案:

答案 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”替换为“ =”,公式将再次起作用-适用于我的工作表,并且其中包含很多公式。