在计算投资回收期的时候遇到一个问题,需要根据累计现金流回正的那一年去计算小数点后的数字。
例如,每年净现金流是3,累计现金流是-10,-7,-4,-1,2,5,这时候回收期就是4-(-1)/2。B3单元格里的4是数出来的,E2和F2也是手动输入的。但是如果净现金流变化,就要重新写公式。
解决这个问题,需要用到3个函数。
第一步:使用countif函数数出4。注意判断条件要加双引号。
【注】countif函数第一个参数是范围,第二个参数是条件,输出结果为范围内符合条件的单元格的个数。
第二步:使用address函数定位累计现金流最后一次为负的位置。
【注】address函数第一个参数是行数,第二个参数是列数,第三个参数是引用类型,1代表绝对引用,2代表列相对行绝对,3代表行相对列绝对,4带代表相对引用。输出结果为单元格位置。
第三步:使用indirect函数得到累计现金流最后一次为负的相应值。
【注】indirect函数的参数为单元格地址,输出结果为地址对应单元格的值。
用同样的方法可以得到累计现金流最后一次为负的下一年的净现金流的值。最后的公式如下。
=COUNTIF(B2:G2,"<0")-INDIRECT(ADDRESS(2,1+COUNTIF(B2:F2,"<0"),1))/INDIRECT(ADDRESS(1,2+COUNTIF(B2:F2,"<0"),1))
如果每年净现金流改变,相应的投资回收期=2-(-4)/5=2.8年。公式没有问题啦,手动输的B3就会出现偏差。
【备注】以上图为例,投资回收期一般的计算公式为3-2/5,但因为在数学上是一样的,我习惯用2-(-4)/5,但是会带来一个问题,就是累计现金流如果恰好为0,上面的公式会计算错误,解决这个问题的方法是上面的每个countif函数的条件都改为<=0,改了没有影响,只是我发现的时候懒得全换一遍图。