我正在尝试创建一个XIRR函数,该函数将基于唯一的投资名称和特定日期之间的相应现金流量来计算收益。例如,我要使用以下现金流量计算2018年1月16日至2018年5月20日之间投资A的内部收益率:
投资日期金额 A 01/15/18($ 55) B 01/18/18($ 20) B 01/19/18 $ 9 B 18年4月6日$ 6 A 04/08/18 $ 24 A 05/20/18 40美元 B 18年5月21日$ 7 A 05/23/18($ 5)
从18年1月16日开始
结束05/20/18
我所面临的挑战是跳过投资B的现金流,仅计算投资A。这是我要做的工作的简化版本。完整版有大约50个投资名称,分布在大约1000行中。任何建议都会有所帮助。我尝试使用fncs INDEX,MATCH,OFFSET和COUNTIF。
随附电子表格以供参考。
感谢您的帮助!
答案 0 :(得分:0)
以下数组公式根据E2中的投资日期,F2中的开始日期和G2中的结束日期返回XIRR。请注意,需要使用CONTROL + SHIFT + ENTER确认公式。
=XIRR(INDEX(C:C,N(IF(1,MODE.MULT(IF(A2:A9=E2,IF(B2:B9>=F2,IF(B2:B9<=G2,ROW(C2:C9)*{1,1}))))))),INDEX(B:B,N(IF(1,MODE.MULT(IF(A2:A9=E2,IF(B2:B9>=F2,IF(B2:B9<=G2,ROW(C2:C9)*{1,1}))))))))
对于早期版本的Excel,请尝试使用以下公式。请注意,还需要使用CONTROL + SHIFT + ENTER确认此公式。
=XIRR(N(OFFSET(C2:C9,SMALL(IF(A2:A9=E2,IF(B2:B9>=F2,IF(B2:B9<=G2,ROW(C2:C9)-ROW(C2)))),ROW(INDIRECT("1:"&COUNTIFS(A2:A9,E2,B2:B9,">="&F2,B2:B9,"<="&G2)))),0,1)),N(OFFSET(B2:B9,SMALL(IF(A2:A9=E2,IF(B2:B9>=F2,IF(B2:B9<=G2,ROW(B2:B9)-ROW(B2)))),ROW(INDIRECT("1:"&COUNTIFS(A2:A9,E2,B2:B9,">="&F2,B2:B9,"<="&G2)))),0,1)))