为什么这个引用是#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显示。