2016-03-28 104 views
-1

我有一组值作为连续以下:计算回报值在Excel

(9888000)(88410205)(76030786)(62712494)(48416610)(33102893)(16729517)746979 19371753 39191722 43755624 66114081 89,819,671 114,926,989 141,492,724

每个值代表某一特定年份的金额。例如(16,729,517)是第7年的现金流出。

现在我的金额为110,000,000,作为另一个单元中的初始付款。

现在我尝试计算初始付款的投资回收年份。对我而言,投资回收期应为:当年的7.96倍为正值。

但我无法计算出这个7.96的值。任何人都可以请帮忙?

我已经通过间接的方法来完成它:

作为第一步,我在每列校验值,并存储true或false对正值和负值。第二步:=MATCH(TRUE,Complete Array,0)。这给了我8作为数字,它发现第一个正值。

然后,第三步,我用这个公式:

=Year-OFFSET(CFC,0,Year)/OFFSET(Investment,0,Year) . 

在这种情况下年是我在步骤2中得到了和CFC细胞是空的(累计现金流量为0年)。输出这个7.96,这是我的要求值。

但这是一个漫长而间接的方式。我想为所有这些计算有一个单行公式。

+1

告诉我们你是如何试图解决这个问题的,以及你遇到问题的地方。 –

+0

RON“我通过间接方法完成了它: – user115079

+0

在你的问题中添加这些信息并用公式描述你的方法,它看起来像是一个简单的插值问题 –

回答

2

你可以将你的公式组合成一行。下面是你在做什么的轻微变化,这是下面的值之间以及在零以上的直线外推:

=FORECAST(0,{-1,0}, 
OFFSET(CashFlows,,MATCH(TRUE,CashFlows>0,0)-2,1,2)) 
+MATCH(TRUE,CashFlows>0,0) 

您可能需要更改偏移公式中,如果您的CashFlows范围是在一列,而不是行。式是通过按下ctrl+shift同时击中enter

EDIT此公式忽略了非常第一现金流是否正或负的输入作为数组公式。如果要包含它,请将>运算符更改为>=并测试是否有错误。

+0

I当我尝试使用时得到'N/A':MATCH( TRUE,现金流> 0,0)。 – user115079

+0

这只是公式的一部分。但是你是否按照我在答案中写的那样输入了它?按住'ctrl + shift'同时按下'enter'?如果您观察公式栏中的公式,Excel中是否有围绕它的大括号{{}}? (而不是你) –

+0

其实我对于完整的公式有相同的结果“不适用”,然后我试图在零件中做到这一点。我也没有看到任何{...}在公式栏....作为参考,我已经上传文件:http://we.tl/hGYUVYGr1j表1名称为'20'。 – user115079

0

你的公式方法似乎很自然。我不确定你可以做得更好,但是我确信一个数组公式可能会找到一种方法将它全部包装成单一的,尽管不太可读的公式。

使用VBA,您可以编写一个可以直接从电子表格中调用的函数。在标准代码模块的说:

Function PayBack(R As Range) As Variant 
    'R is a range, assumed to be 1-dimensional 
    'consisting of negative numbers which 
    'at some point transition to positive 
    'returns the cross-over point 

    Dim i As Long, n As Long 
    Dim x As Double, y As Double 

    n = R.Cells.Count 
    x = R.Cells(1).Value 
    If x >= 0 Then 
     PayBack = CVErr(xlErrNA) 
     Exit Function 
    End If 

    'x < 0 in the following loop: 

    For i = 2 To n 
     y = R.Cells(i).Value 
     If y >= 0 Then 
      x = Abs(x) 
      PayBack = i - y/(x + y) 
      Exit Function 
     End If 
     x = y 
    Next i 
    'if the code reaches here -- still negative, so return error 
    PayBack = CVErr(xlErrNA) 
End Function 

然后,它可以用来像:

enter image description here

我在第1行(所以A1:01)您的样本数据和A3我刚刚进入公式

=PayBack(A1:O1) 

并且它按照预期进行计算。如果数据中没有负向正向转换,它将返回#N/A错误 - 虽然这当然可以通过各种方式进行调整。