为什么一个特定的数组expression式不适用于谷歌表格,但在Excel中工作正常

这是如何在Excel和Google表格中dynamic计算XIRR的延续

提出的数组公式**解决scheme(下文提到)在excel中工作得非常好

= XIRR(INDEX(F:G,N(IF(1,SMALL(IF(B $ 2:B $ 8 = J2,ROW(B $ 2:B 8 $)),ROW(INDEX(A:A,1):INDEX(答:A,COUNTIF(B $ 2:B $ 8 J2)))))),N(IF(1,{1,2}))),select({1,2},INDEX(A:A,N (IF(1,SMALL(IF(B $ 2:B 8 $ = J2,ROW(B $ 2:B 8 $)),ROW(INDEX(A:A,1):INDEX(A:A,COUNTIF(B $ 2:乙$ 8 J2))))))),TODAY()))

但同样的解决scheme拒绝在错误的谷歌表中工作

在XIRR评估中,值数组必须包含正数和负数。

任何想法,为什么这不是在谷歌工作表,如何使其工作?

源数据

PurchaseDate Script No.ofunits PurchNAVrate NetAmount ForXIRR TotalReturn 17/11/2014 A 2241 33 75000 -75000 96000 8/1/2015 B 53 649 35000 -35000 43000 14/1/2015 B 75 658 50000 -50000 61500 14/10/2014 C 2319 32 75000 -75000 108000 8/1/2015 D 318 109 35000 -35000 40000 14/1/2015 D 450 110 50000 -50000 57000 8/6/2015 D 175 114 20000 -20000 22000 Values for Fund A should be around 14% Values for Fund B should be around 13% Values for Fund C should be around 21% Values for Fund D should be around 8% 

看来,允许我们从INDEX产生一系列回报的结构,即:

N(IF(1,,,

要么

N(INDEX(,,,

在Excel中是有效的,但在Google Sheets中是不合适的,后者都parsing为传递数组中的单个元素(即第一个元素)。

例如,在Excel中,以下内容:

=SUM(INDEX(A1:A10,N(IF(1,{1,2,7}))))

要么:

=SUM(INDEX(A1:A10,N(INDEX({1,2,7},))))

A1A2A7的值相加,但在Google表格中,两者只会求和A1的值。

我对Google表格不太了解,不知道为什么会出现这种情况。 可能使用易失性OFFSET重build我的公式。 我会看看,回到你身边。

更新:看来,即使是基于OFFSET的解决scheme,即:

=XIRR(N(OFFSET(F2,SMALL(IF(B$2:B$8=J2,ROW(B$2:B$8)-MIN(ROW(B$2:B$8))),ROW(INDIRECT("1:"&COUNTIF(B$2:B$8,J2)))),{0,1})),CHOOSE({1,2},N(OFFSET(A2,SMALL(IF(B$2:B$8=J2,ROW(B$2:B$8)-MIN(ROW(B$2:B$8))),ROW(INDIRECT("1:"&COUNTIF(B$2:B$8,J2)))),{0,1})),TODAY()))

不可能。 再一次,它在Excel中正常工作,但在Google表格中不起作用,原因与上面给出的相似(传递给OFFSET的数组无法根据需要parsing)。

我认为这需要精通Google表格的人解释。

参考文献:

https://excelxor.com/2014/09/05/index-returning-an-array-of-values/

问候