问题描述
我希望有人能帮助我更好地利用间接公式。
我有一个表格中的工作表名称列表和一个使用该列表返回指定单元格中的值的 INDIRECT 公式 - 工作表名称列表只是我将公式向下拖动到表格中的一种更简单的方法读取适当的单元格,而无需手动链接每个工作表。
=INDIRECT("'"&A2&"'!"&"K10")
这适用于单个单元格,因为范围引用被简单地表述为公式 (K10) 中的文本,当我需要开始引用诸如 K10:K15 之类的范围并对值求和时,就会出现问题。
>范围 K10:K15 将不可避免地在相关选项卡上添加或删除新行,并且由于 INDIRECT 使用文本作为参考,这意味着范围不会自动调整 - 据我所知,这是“好处之一” ' INDIRECT 但在这种情况下实际上阻碍了我。
另外值得注意的是,范围 (K10:K15) 可能会随着在其上方添加/删除行而移动,因为该范围是更大表格的一部分。
简单来说,我希望获得与另一张纸上范围的标准参考相同的结果,例如=sum(sheet1!K10:K15)(因为这会在添加/删除行时进行调整)但我只想能够通过我在摘要表的表格中的列表来指示引用哪个工作表。>
如何编写 INDIRECT 以便在添加/删除新行时调整范围,或者我应该使用不同的公式来实现这一点?
非常感谢任何建议:)
解决方法
=INDIRECT("'"&A2&"'!K"& MATCH(TRUE,INDIRECT("'"&A2&"'!K:K")<>"",0)&":K"&MAX((INDIRECT("'"&A2&"'!K:K")<>"")*(ROW(INDIRECT("'"&A2&"'!K:K")))))
这间接引用了 K 列中给定工作表中从第一个非空单元格到最后一个非空单元格的行。不确定您是否需要输入 ctrl + shift + enter
(不在应用程序版本中)。
注意:如果范围在第一个和最后一个非空单元格之间包含空单元格,它将被包含为值 0
或者在 Office 365 中使用以下内容:
=FILTER(INDIRECT("'"&A2&"'!K:K"),INDIRECT("'"&A2&"'!K:K")<>"")