View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Crash[_4_] Crash[_4_] is offline
external usenet poster
 
Posts: 2
Default Payback period macro

Here are two Functions that will work for simple cashflows.

The first one is simple, the second takes into consideration the time
value of money.

HTHs

Jon

'---------------------------------------------------------------------------------------
' Procedure : FAME_Payback
' DateTime : 08/04/2002 22:22
' Author : Jon 'Crash' Eggett
' Purpose :
' Notes :
'---------------------------------------------------------------------------------------
'
Function FAME_Payback(Cashflows)
'Calculate the payback period
'Note that the first cash flow must be negative
Dim PB As Single, UB As Integer
UB = Cashflows.Count 'Upper bound (i.e., number of cash flows)
CumSum = 0 'Cumulative sum of cash flows, stop when
greaterthan 0
i = 0 'Counter variable
Do While CumSum <= 0 And i < UB
i = i + 1
CumSum = CumSum + Cashflows(i)
Loop
If CumSum = 0 Then
CumSum = CumSum - Cashflows(i)
PB = (i - 2) - CumSum / Cashflows(i)
FAME_Payback = PB
Else: FAME_Payback = "Payback Life" 'Report error
End If
End Function
'---------------------------------------------------------------------------------------
' Procedure : NEW_Payback
' DateTime : 08/04/2002 22:12
' Author : Jon 'Crash' Eggett
' Purpose :
' Notes : Payback periods calculated with PV of Cashflows
'---------------------------------------------------------------------------------------
'
Function NEW_Payback(Cashflows, Rate)
'Calculate the payback period if Rate = 0, discounted payback if Rate < 0
'Note that the first cash flow must be negative
Dim PB As Single, UB As Integer
UB = Cashflows.Count 'Upper bound (i.e., number of cash flows)
CumSum = 0 'Cumulative sum of cash flows, stop when
greater than 0
i = 0
If Rate = 1 Then Rate = Rate / 100
Do While CumSum <= 0 And i < UB
i = i + 1
CumSum = CumSum + Cashflows(i) / (1 + Rate) ^ (i - 1)
Loop
If CumSum = 0 Then
CumSum = CumSum - Cashflows(i) / (1 + Rate) ^ (i - 1)
PB = (i - 2) - CumSum / (Cashflows(i) / (1 + Rate) ^ (i - 1))
NEW_Payback = PB
Else: NEW_Payback = "Payback Life" 'Report error
End If
End Function

Chad wrote:

Hey all,

Does anyone have a macro for calculating payback period??
I need some help thanks



--
42°57N 81°16W