我有一本包含多个工作表的工作簿,并且在一些工作表中开发了对其中一个工作表中某一行的查询/引用。
我意识到,当我向引用的工作表添加一行时,查询/引用并未意识到已添加新行。我不明白为什么,但无论如何,我发现了一些对名为 INDIRECT 的函数的引用,该函数似乎可以解决这个问题。是吗?
我试图弄清楚如何在公式中引用单独的工作表,但似乎无法让它工作。当前引用是: ='B&A'!P41
其中B&A
是工作表名称,P41
是引用的单元格。
因此这里有两个问题:
- 当我添加新行时,INDIRECT 能解决我的问题
B&A
吗? - 如果是这样,那么 INDIRECT 函数的正确语法是什么?
答案1
是的,INDIRECT
将强制它始终查看同一个单元格,无论其他单元格是否被添加/删除。
INDIRECT
接受一个字符串,然后将其用作单元格地址。因此,您当前的公式为:
='B&A'!P41
会成为
=INDIRECT("'B&A'!P41")
使用此功能,它应该静态引用单元格,并且仅当引用的单元格发生变化时更新。
答案2
如果您需要在引用的工作表中添加新行/单元格/列,则必须创建一种方法让引用公式识别这一点。
我将在引用的工作表中创建一个单元格,以文本形式包含表/数组引用
- 例如$A1:$B200
在命名单元格中,例如table_ref
-
然后可以使用额外的 INDIRECT() 将其拾取并取消引用(从其他工作表中),如下所示INDIRECT( INDIRECT(table_ref) )
在创建内容时,您table_ref
可能必须使用CELLS()
、、、或类似的函数,并连接其中几个函数的结果 - 我相信还有一些我现在记不起来的类似函数。COUNTIF()
SUBTOTAL()
OFFSET()
ROWS()