假设我有三张纸(假设Sheet1
、Sheet2
和Sheet3
(。
Sheet1
和 Sheet2
分别包含一个名为 MyRange
的工作表级区域。在Sheet3
中,如果我想从Sheet1
访问MyRange
,我将只能使用='Sheet1'!MyRange
。
但是现在,我希望Sheet3
包含通用代码并能够引用Sheet1
或Sheet2
。所以我希望能够使用
=INDIRECT("'" & MySheetName & "'!我的范围"(
但是,当我这样做时,我会收到错误#REF
。
- 我做错了什么?
- 我该如何解决这个问题?
如果 MyRange 由多行、多列范围组成,请确保在输入 =INDIRECT("'" & MySheetName & "'!MyRange")
时按ctrl-shift-enter
。 如果您忘记使用 ctrl-shift-enter
,您将收到一个#VALUE
错误。 但是,您说您有#REF
.
使用您的单单元格区域代码,我得到了您正在寻找的结果。 我得到#REF
错误的唯一方法是使用错误的工作表名称。 我怀疑那是你的问题。 检查工作表名称,如果仍然不起作用,请重新发布更多详细信息。
由非常有用的 tpkaplan 答案触发的进一步实验使我能够更好地找到问题。以下是我的发现。
我在问题中描述的确切情况在大多数情况下确实非常正确(我失败了,但从未设法理解为什么(。
但是,我认为我正在测试的情况并非如此。
实际上,您需要非常具体地说明所谓的"命名范围"所指的内容。Excel 可以以不同的方式处理四个不同的项目:
- 名称是对单元格的引用
- 名称是对常量的引用
- 名称是对单元格表的引用
- 该名称是对上述任何类别的引用,但通过公式。
给定这四个类别,有 3 种方法可以获取#REF
错误:
- 错误的工作表名称(如 tpkaplan 所述(;
- 范围名称不存在(显然(;
- 该名称是指单元格或一系列单元格以外的任何其他内容(我的实际案例是一个公式(。
另请注意,如果名称引用使用相对定位给定的单元格(例如,名称引用 ='Sheet1'!$A5
,以便行根据您从中调用名称的单元格而变化(,则从另一个工作表调用时,它的行为就像是从引用工作表的单元格A1
调用一样。
因此,为了解决这个问题,要走的方法是让名称显示它在某处产生的值,并具有另一个名称,该名称引用现在包含您尝试访问的信息的特定单元格。然后引用第二个名字。