在另一张纸上使用间接引用一个名为范围的excel

假设我有三张纸(比如说Sheet1Sheet2Sheet3 )。

Sheet1Sheet2包含每个名为MyRange的图纸级范围。 在Sheet3 ,如果我想从Sheet1访问MyRange ,我将只能使用='Sheet1'!MyRange

但现在,我希望Sheet3包含通用代码,并能够引用Sheet1Sheet2 。 所以我希望能够使用相同的东西

= 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中调用的那样。

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