2016-03-28 140 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錯誤 - 雖然這當然可以通過各種方式進行調整。