为啥 INDIRECT() 不适用于具有工作表范围的动态命名范围?

Posted

技术标签:

【中文标题】为啥 INDIRECT() 不适用于具有工作表范围的动态命名范围?【英文标题】:Why is INDIRECT() not working on a dynamic named ranged with worksheet scope?为什么 INDIRECT() 不适用于具有工作表范围的动态命名范围? 【发布时间】:2021-04-19 15:27:07 【问题描述】:

我正在使用 Excel Office 365。我试图了解为什么 INDIRECT() 不适用于动态命名范围。截图如下:

在表 1、2 和 3 中,我有一个命名范围“Item1Price”,其中包含一些数字。在 Sheet3 中,带有数字的范围是使用 OFFSET 公式定义的。为什么这会破坏 INDIRECT()?有没有其他方法可以做到这一点?

谢谢

【问题讨论】:

【参考方案1】:

INDIRECT 不能引用动态命名范围。这只是我讨厌 INDIRECT 的另一个原因。

您可以使用辅助单元格。

取决于您的版本:

Office 365 或更高版本将其放在第一个单元格中:

=INDEX(Sheet3!$C$3:$E$5,MATCH(Sheet3!$C$11,Sheet3!$B$3:$B$5,0),0)

或者如果早期版本连续突出显示三个单元格并将公式放入公式栏中,然后按 Ctrl-Shift-Enter 进入数组。

然后,将辅助单元格分配给命名范围,而不是命名范围:

然后你可以使用你的公式:

=SUM(INDIRECT("sheet3!Item1Price"))

现在随着 C11 中的值发生变化,SUM 也会发生变化:

另一种选择是使用 CHOOSE 完全跳过 INDIRECT:

=CHOOSE(MATCH(A1,"Sheet1","Sheet2","Sheet3",0),Sheet1!Item1Price,Sheet2!Item1Price,Sheet3!Item1Price)

这假设您将在 A1 中拥有所需的工作表名称。这将毫无问题地使用您的动态范围名称。

【讨论】:

以上是关于为啥 INDIRECT() 不适用于具有工作表范围的动态命名范围?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Google 表格中创建多个工作表引用的 INDIRECT 数组字符串?

MySQL - WHERE 子句中的 NOT IN 查询具有相同的结构,适用于第一个表但不适用于第二个表

为啥音译不适用于动态添加输入字段?

使用Countifs仅根据不同的数据范围计算唯一值

为啥我的excel其中的一个表格插入indirect函数时没作用,我输入的明明是准确的但是再其他

为啥切换效果不适用于使用角度指令的嵌套 div