为什么这个引用是#VALUE! 错误?
我写了以下公式: =SUM(INDIRECT("'"&BondList&"'!D16")*INDIRECT("'"&BondList&"'!D13"))/D13
,其中bondList
返回{"Bond1";"Bond2"}
(都是有效的工作表名称),并且引用具有以下值:
Bond1:D13 1000 Bond1:D16 70 Bond2:D13 2000 Bond2:D16 80
即使我会在表格名称中input错字,Excel也会返回“#REF!” 但是这显然是数据types的错误,eing说我看到错误是在Indirect
评估之后提出的,而不是在评估*
。
我从来没有见过这样的事情。 这就是说,我做了一个实验,我改变了这个公式=SUM(--ISERROR(INDIRECT("'"&BondList&"'!D16")))
,它返回2
。
最后,为了避免XY问题,我还要提到,我试图在D16
中分别获得D16
中的权重位于D13
的值的加权平均值。
使用INDIRECT
返回数组值可能会非常棘手。
对于加权平均值,如您所描述的,请尝试:
=SUMPRODUCT(N(INDIRECT("'" & BondList & "'!D16"))*N(INDIRECT("'" & BondList & "'!D13")))/SUMPRODUCT(N(INDIRECT("'" & BondList & "'!D13")))
如果你创build一个公式如:
=ISNUMBER(INDIRECT("'" & BondList & "'!D16"))
并通过在公式栏中select公式,并按F9
或使用INDEX
函数查看返回数组的各个元素,您将看到它的计算结果为{FALSE; FALSE}。 所以,即使这些值看起来是数字,Excel也没有看到它们。 N
函数将它们转换为值,Excel将以数字forms显示。