使用indirect参考另一个工作表上的excel命名范围

时间:2015-04-01 17:23:55

标签: excel dynamic named-ranges

我们说我有三张(让我们说Sheet1Sheet2Sheet3)。

Sheet1Sheet2包含每个名为MyRange的工作表级别范围。 在Sheet3,如果我想从MyRange访问Sheet1,我将能够使用='Sheet1'!MyRange

但现在,我希望Sheet3包含通用代码,并且能够引用Sheet1Sheet2。所以我希望能够使用

实现同样的目标
  

=间接("'"& MySheetName&"'!MyRange")

但是,当我这样做时,我收到错误#REF

  • 我做错了什么?
  • 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

如果MyRange包含多行,多列范围,请确保在输入ctrl-shift-enter时按下=INDIRECT("'" & MySheetName & "'!MyRange")。如果您忘记使用ctrl-shift-enter,则会出现#VALUE错误。但是,您声明自己有#REF

将代码用于单细胞范围,我得到您正在寻找的结果。我可以获得#REF错误的唯一方法是使用错误的工作表名称。我怀疑那是你的问题。检查工作表名称并重新发布更多详细信息,如果它仍然不起作用。

答案 1 :(得分:1)

由非常有帮助的tpkaplan回答引发的进一步实验使我能够更好地找到问题所在。以下是我的发现。

我在问题中描述的确切案例确实在大部分时间都很正常(我失败了,但从未设法理解为什么)。

然而,我认为我正在测试的情况并非如此。

事实上,你需要非常具体地说明所谓的"命名范围"是指。 Excel可以有四种不同的处理方式:

  • 该名称是对单元格的引用
  • 该名称是对常量的引用
  • 该名称是对细胞表的引用
  • 该名称是对上述任何类别的引用,但是通过公式。

鉴于这四个类别,有3种方法可以获得#REF错误:

  • 错误的工作表名称(如tpkaplan所述);
  • 范围名称不存在(显然);
  • 该名称是指除了单元格或一系列单元格之外的任何其他内容(我的实际案例是公式)。

另请注意,如果名称是指使用相对定位给出的单元格(例如,名称引用='Sheet1'!$A5,那么该行会根据您从中调用名称的单元格而更改)另一张纸,它的行为就像从被推荐纸张的单元格A1中调用一样。

因此,解决问题的方法是让名称显示它在某处产生的值,并使用另一个名称来引用现在包含您尝试访问的信息的特定单元格。然后参考第二个名字。