使用间接引用另一个 sheet 上的 excel 命名范围

Refer to an excel named range on another sheet using indirect

假设我有三个 sheet(假设 Sheet1Sheet2Sheet3)。

Sheet1Sheet2 分别包含一个名为 MyRange 的 sheet 级范围。 在 Sheet3 中,如果我想从 Sheet1 访问 MyRange,我将只能使用 ='Sheet1'!MyRange

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

实现同样的事情

=INDIRECT("'" & MySheetName & "'!MyRange")

但是,当我这样做时出现错误 #REF

如果 MyRange 由多行、多列范围组成,请确保在输入 =INDIRECT("'" & MySheetName & "'!MyRange") 时按了 ctrl-shift-enter。如果您忘记使用 ctrl-shift-enter,您将收到 #VALUE 错误。但是,您说您有 #REF

将您的代码用于单个单元格范围,我得到了您要查找的结果。我得到 #REF 错误的唯一方法是使用错误的 sheet 名称。我怀疑这是你的问题。检查 sheet 名称并重新发布更多详细信息,如果它仍然不起作用。

由非常有用的 tpkaplan 答案引发的进一步实验使我能够更好地定位问题。这是我的发现。

我在问题中描述的确切案例在大多数情况下确实有效(我失败了,但从未设法理解原因)。

然而,我认为我正在测试的案例并没有。

其实所谓的"Named range"指的是什么,你需要非常具体。 Excel 可以对四种不同的项目进行不同的处理:

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

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

  • 错误的sheet名称(如tpkaplan所述);
  • 范围名称不存在(显然);
  • 该名称指的是除单元格或单元格范围之外的任何其他内容(我的实际情况是一个公式)。

另请注意,如果名称指的是使用相对定位给出的单元格(例如,名称指的是 ='Sheet1'!$A5,因此该行会根据您调用该名称的单元格而变化),当从另一个 sheet 调用,它的行为就好像它是从引用的 sheet.

的单元格 A1 调用的一样

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