我们说我有三张(让我们说Sheet1
,Sheet2
和Sheet3
)。
Sheet1
和Sheet2
包含每个名为MyRange
的工作表级别范围。
在Sheet3
,如果我想从MyRange
访问Sheet1
,我将能够使用='Sheet1'!MyRange
。
但现在,我希望Sheet3
包含通用代码,并且能够引用Sheet1
或Sheet2
。所以我希望能够使用
=间接("'"& MySheetName&"'!MyRange")
但是,当我这样做时,我收到错误#REF
。
答案 0 :(得分:2)
如果MyRange包含多行,多列范围,请确保在输入ctrl-shift-enter
时按下=INDIRECT("'" & MySheetName & "'!MyRange")
。如果您忘记使用ctrl-shift-enter
,则会出现#VALUE
错误。但是,您声明自己有#REF
。
将代码用于单细胞范围,我得到您正在寻找的结果。我可以获得#REF
错误的唯一方法是使用错误的工作表名称。我怀疑那是你的问题。检查工作表名称并重新发布更多详细信息,如果它仍然不起作用。
答案 1 :(得分:1)
由非常有帮助的tpkaplan回答引发的进一步实验使我能够更好地找到问题所在。以下是我的发现。
我在问题中描述的确切案例确实在大部分时间都很正常(我失败了,但从未设法理解为什么)。
然而,我认为我正在测试的情况并非如此。
事实上,你需要非常具体地说明所谓的"命名范围"是指。 Excel可以有四种不同的处理方式:
鉴于这四个类别,有3种方法可以获得#REF
错误:
另请注意,如果名称是指使用相对定位给出的单元格(例如,名称引用='Sheet1'!$A5
,那么该行会根据您从中调用名称的单元格而更改)另一张纸,它的行为就像从被推荐纸张的单元格A1
中调用一样。
因此,解决问题的方法是让名称显示它在某处产生的值,并使用另一个名称来引用现在包含您尝试访问的信息的特定单元格。然后参考第二个名字。