为啥 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 查询具有相同的结构,适用于第一个表但不适用于第二个表