有人可以向我解释为什么这个公式有效:
={SUMPRODUCT((INDIRECT("TabName!"&A1&":a16"))*1)}
其中:
A1 = ADDRESS(8,COLUMN(),1,1) = $A$8
但这不是:
={SUMPRODUCT((INDIRECT("TabName!"&ADDRESS(8,COLUMN(),1,1)&":a16"))*1)}
= #Value!
公式在A列中,因此解析与A1相同。
Excel显然根据上下文不同地处理相同公式的结果 - 要么引用另一个单元格(A1)中的结果,要么将其合并到公式本身中。
我甚至不知道从研究这种现象开始寻找什么,所以如果之前已经多次解释过,请原谅我。
有解决方案吗?我真的不想使用单元格来计算仅供其他公式使用的单元格引用。
此外,上面是一个较大的论坛的摘录,所以我很欣赏它的逻辑是没有意义的。
谢谢!
答案 0 :(得分:0)
首先,SUMPRODUCT
是数组公式SUM
的特例。所以当你写
=SUMPRODUCT((INDIRECT("Sheet8!"&ADDRESS(8,COLUMN(),1,1)&":a16"))*1)
它将Column()
视为数组,而不是给您1
,而是{1}
,这会导致评估如下:
=SUMPRODUCT((INDIRECT("Sheet8!"&ADDRESS(8,COLUMN(),1,1)&":a16"))*1)
=SUMPRODUCT((INDIRECT("Sheet8!"&ADDRESS(8,{1},1,1)&":a16"))*1)
=SUMPRODUCT((INDIRECT("Sheet8!"& {"$A$8"} &":a16"))*1)
=SUMPRODUCT((INDIRECT({"Sheet8!$A$8:a16"}))*1)
=SUMPRODUCT((INDIRECT({*#VALUE!*"}))*1)
因此,INDIRECT({"Sheet8!$A$8:a16"})
会为您提供 #VALUE
错误。
其次,如果您使用sum评估相同的公式
=SUM((INDIRECT("Sheet8!"&ADDRESS(8,COLUMN(),1,1)&":a16")))
Column()
将为您提供1
而非{1}
,就像 SUMPRODUCT 一样,您将获得所需的结果。