2010-11-01 20 views
1

我是一个应用程序,打开一个Excel工作簿之前,在下面的例子中删除并重新创建一些表,等等,例如“工作表Sheet1”的作者。如何保持一个公式的引用到工作表时,工作表被删除并替换?

其他工作表(说Sheet 2中)在同一工作簿可具有指替换表,这样的公式:

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

不幸的是,当片材是上述式到Sheet在参考被打破取代,成为

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

任何人都可以想办法,所以它不会失败的代码这个公式?它可以,例如,在Sheet2中或东西隐藏单元格获得工作表的名称?

我只是不知道有足够的了解Excel公式知道的可能性是什么。

TIA

回答

2

使用间接寻址和命名范围

1)使用幻象细胞(即Z1 ... Zn)的填充文本 “SheetN!”为每个要删除的工作表添加。

2)在这些纸张

3)在公式中替换“间接”和命名范围的字面引用定义为所有的外部寻址单元格和区域范围的名称。

例子:

更换

=Sum(Sheet1!A:A) 

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

其中 “CACA” 是在Sheet1定义为一个命名范围:A,与Z1包含“工作表Sheet1! “

又如:

更换

=Sheet1!A1+Sheet1!A2 

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

现在你可以删除工作表Sheet1没有参考的问题。

你应该重新创建(在VBA)当你添加新的工作表Sheet1的指定范围。

编辑:在回答你关于与空白表评论中名

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

使用此:

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

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

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

HTH!

+0

belisarius:很好的答案。谢谢!快速提问:我没有使用“Sheet1”,而是使用名称中包含空格的工作表。在第一个例子中,我一直无法弄清楚如何在Z1的内容中使用引号。任何帮助? – RobertFrank 2010-11-02 00:10:49

+0

@Robert查看编辑 – 2010-11-02 00:40:55

+0

非常感谢!对此,我真的非常感激。我投了你的答案,因为你的后续和有用的下划线使你的答案可读! – RobertFrank 2010-11-02 01:37:54

相关问题