当工作表被删除和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!