【问题标题】:Why does a specific arrayformula not work in google sheets but works fine in excel为什么特定的数组公式在谷歌表格中不起作用但在 excel 中工作正常
【发布时间】:2016-08-30 12:57:46
【问题描述】:

这是how to calculate XIRR dynamically in excel and in google sheets的延续

建议的数组公式**解决方案(如下所述)在 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:A,COUNTIF(B$2:B$8,J2)))))),N(IF(1,{1,2}))),CHOOSE({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:B$8,J2))))))),今天()))

但相同的解决方案拒绝在谷歌表格中工作并出现错误

在 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%

【问题讨论】:

  • 您的问题的具体答案似乎是“因为谷歌表格不是 excel,反之亦然”;-)

标签: excel google-sheets array-formulas


【解决方案1】:

似乎允许我们从INDEX 生成返回数组的构造,即:

N(IF(1,,,

N(INDEX(,,,

在 Excel 中有效,但在 Google 表格中无效,后者都解析为传递的数组中的单个(即第一个)元素。

例如,在 Excel 中,如下:

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

或:

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

将对A1A2A7 中的值求和,但在 Google 表格中,两者都只会对 A1 中的值求和。

我对 Google 表格了解得不够多,不知道为什么会这样。可以使用 volatile OFFSET 重构我的公式。我会看看并回复你。

更新:似乎即使是基于OFFSET 的解决方案,即:

=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 的数组没有按要求解析)。

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

参考资料:

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

问候

【讨论】:

    猜你喜欢
    • 2020-08-14
    • 2021-07-16
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多