当工作表被删除和replace时,如何保留公式对工作表的引用?

我是一个应用程序的作者,在打开Excel工作簿之前,删除并重新创build一些工作表,例如下面的示例中的“Sheet1”。

在同一工作簿中的其他工作表(如Sheet2)可能具有引用被replace的工作表的公式,如下所示:

=IF('Sheet1'!A9="","",'Sheet1'!A9) 

不幸的是,当Sheet被replace时,上面公式中Sheet1的参考被破坏

 =IF(#Ref!A9="","",#REF!A9) 

任何人都可以想出一种方法来编写这个公式,所以它不会失败? 例如,它可以从Sheet2中隐藏的单元格中获取工作表的名称或其他内容?

我只是不太了解Excel公式,知道可能性是什么。

TIA

使用间接寻址和命名范围

1)使用填充文本“SheetN!”的幻像单元格(即Z1 … Zn) 为每个你想要删除的工作表。

2)为这些表单中的所有外部可寻址单元格和范围定义范围名称

3)在你的公式中用“间接”和指定范围的LITERALreplace引用。

例:

更换

  =Sum(Sheet1!A:A) 

  =SUM(INDIRECT(Z1&"caca")) 

其中“caca”是在Sheet1中定义为A:A的命名范围,而Z1包含“Sheet1!”

另一个例子:

更换

  =Sheet1!A1+Sheet1!A2 

  =INDIRECT(Z1&"NamedRangeForA1")+INDIRECT(Z1&"NamedRangeForA2") 

现在,您可以删除Sheet1而不引用问题。

当您添加新的Sheet1时,您应该重新创build(在VBA中)命名范围。

编辑:回答你的评论有关表格与空白的名称

在这种情况下,你需要额外的福:)

用这个:

  =INDIRECT("_'_" & Z1& "_'_!_" & "caca") 

“_”应该被删除,因为我只是为了简化单引号和双引号的可视化而插入它们。

在单元格Z1中input不带引号且不带感叹号的Sheet1的名称(因为它已经在公式中)。

HTH!