为什么一个特定的数组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},))))
将A1
, A2
和A7
的值相加,但在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/
问候