代码之家  ›  专栏  ›  技术社区  ›  RobertFrank Picarus

如何在删除和替换工作表时保留公式对工作表的引用?

  •  2
  • RobertFrank Picarus  · 技术社区  · 15 年前

    同一工作簿中的其他工作表(如工作表2)可能包含引用替换工作表的公式,如下所示:

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

    不幸的是,当纸张被替换时,上述公式中对纸张1的引用被破坏,变成

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

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

    我只是对Excel公式了解不够,不知道有什么可能。

    1 回复  |  直到 15 年前
        1
  •  5
  •   Dr. belisarius    15 年前

    使用间接寻址和命名范围

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

    例子:

        =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,而不存在引用问题。

    添加新工作表1时,应(在VBA中)重新创建命名范围。

    编辑:回答您对名称为空的工作表的评论

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

    使用这个:

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

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

    啊!

    推荐文章