gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 01:18:46 25 4
gpt4 key购买 nike

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

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

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

不幸的是,当更换sheet时,上面公式中对Sheet1的引用就被破坏了,变成了

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

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

我只是对 Excel 公式了解不够,不知道有哪些可能性。

TIA

最佳答案

使用间接寻址和命名范围

1) 使用填充有文本“SheetN!”的虚拟单元(即 Z1...Zn)对于要删除的每张工作表。

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

3) 在公式中,将引用替换为“间接”和命名范围的文字。

示例:

替换

    =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 时,您应该重新创建(在 VBA 中)命名范围。

编辑:回答您对名称中带有空格的表格的评论

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

使用这个:

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

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

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

呵呵!

关于excel - 当工作表被删除和替换时,如何保留对工作表的公式引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4070930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com