在另一张纸上使用间接引用一个名为范围的excel
假设我有三张纸(比如说Sheet1
, Sheet2
和Sheet3
)。
Sheet1
和Sheet2
包含每个名为MyRange
的图纸级范围。 在Sheet3
,如果我想从Sheet1
访问MyRange
,我将只能使用='Sheet1'!MyRange
。
但现在,我希望Sheet3
包含通用代码,并能够引用Sheet1
或Sheet2
。 所以我希望能够使用相同的东西
= INDIRECT(“'”&MySheetName&“'!MyRange”)
但是,当我这样做时,我收到了错误#REF
。
- 我做错了什么?
- 我该如何解决这个问题?
如果MyRange由一个多行多列范围组成,那么当你input=INDIRECT("'" & MySheetName & "'!MyRange")
时,确保你按下了ctrl-shift-enter
。 如果您忘记使用ctrl-shift-enter
,将会出现#VALUE
错误。 不过,你说你有一个#REF
。
使用你的代码单细胞范围,我得到你正在寻找的结果。 我可以得到#REF
错误的唯一方法是使用错误的工作表名称。 我怀疑这是你的问题。 检查表单名称,如果仍然不起作用,请转发更多细节。
由非常有用的tpkaplan答案触发进一步的实验,让我更好地find问题。 这是我的发现。
我在这个问题中描述的确切情况的确在大多数情况下是正确的(我曾经失败了,但从来没有设法理解为什么)。
但是,我认为我正在testing的情况并不是。
事实上,你需要对所谓的“命名范围”是指什么非常具体。 Excel中可以有四种不同的处理方式:
- 该名称是对单元格的引用
- 这个名字是对一个常量的引用
- 该名称是对单元格表的引用
- 该名称是对上述任何类别的引用,但通过一个公式。
鉴于这四个类别,有3种方法获得#REF
错误:
- 错误的表名(如tpkaplan所述);
- 范围名称不存在(显然);
- 这个名字是指任何细胞或一系列细胞(我的实际案例是一个公式)。
还要注意的是,如果名称是指使用相对定位给出的单元格(例如,名称引用='Sheet1'!$A5
,以便根据您称为名称的单元格更改该行)如果是其他表单,则performance得好像是从引用表单元格A1
中调用的那样。
所以要解决这个问题的方法是让名称显示它产生的值,并使用另一个名称来引用特定的单元格,该单元格现在包含您正尝试访问的信息。 然后参考那个第二个名字。