Amortization

legendv

Registered User.
Local time
Today, 04:46
Joined
Mar 18, 2002
Messages
99
Hello all, does anyone know how to create an amortization schedule? Could really use the help. Thanks in advance.
 
What kind of amortization are you talking about? Fixed assets or loans. Please provide little more detail.
 
I made a calculator based on an amortization formula that when given:

Principal
Term
Interest Rate

gives you your monthly payment.

What I need to see is the actual month-to-month depreciating principal - interest earned - interest accrued for the length of the loan based on the term.

I assume its a loop, but I'm not familiar with those.

Thanks
 
Do you know the formulas for calculating the monthly payments and how to apportion each payment to principal and interest?
 
I know the formula to find the monthly payment but I don't know the formula to apportion each payment to principal and interest. Can you help with that?
 
Try this. It's got some flaws (e.g., don't specify more than 36 months or you'll end up with a form you can't delete), but it should provide the general idea.
Code:
Function MyPPmt()
Dim NL, TB, fmt, FVal, PVal, APR, TotPmts, PayType, Payment, Msg, _
MakeChart, Period, P, i, Bal
Const ENDPERIOD = 0, BEGINPERIOD = 1    ' When payments are made.
NL = Chr(13) & Chr(10)  ' Define newline.
TB = Chr(9) ' Define tab.
fmt = "###,###,##0.00"  ' Define money format.
FVal = 0    ' Usually 0 for a loan.
PVal = InputBox("How much do you want to borrow?")
APR = InputBox("What is the annual percentage rate of your loan?")
If APR > 1 Then APR = APR / 100 ' Ensure proper form.

TotPmts = InputBox("How many monthly payments do you have to make?")
PayType = MsgBox("Do you make payments at the end of month?", vbYesNo)
If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD
Payment = Abs(-Pmt(APR / 12, TotPmts, PVal, FVal, PayType))
Msg = "Your monthly payment is " & Format(Payment, fmt) & ". "
Msg = Msg & "Would you like a breakdown of your principal and "
Msg = Msg & "interest per period?"
MakeChart = MsgBox(Msg, vbYesNo)    ' See if chart is desired.

If MakeChart <> vbNo Then
    If TotPmts > 12 Then MsgBox "Only first year will be shown."
    Msg = "Month  Payment  Principal  Interest   Balance" & NL
    Bal = PVal
    Period = 1
    Do While Bal > Payment
    'For Period = 1 To TotPmts
        'If Period > 12 Then Exit For    ' Show only first 12.
        P = PPmt(APR / 12, Period, TotPmts, -PVal, FVal, PayType)
        P = (Int((P + 0.005) * 100) / 100)  ' Round principal.
        Bal = Bal - P
        i = Payment - P
        i = (Int((i + 0.005) * 100) / 100)  ' Round interest.
        Msg = Msg & Period & TB & Format(Payment, fmt)
        Msg = Msg & TB & Format(P, fmt) & TB & Format(i, fmt) & TB & Format(Bal, fmt) & NL
        Period = Period + 1
    Loop
    Msg = Msg & Period & TB & Format(Bal, fmt)
    Msg = Msg & TB & Format(Bal, fmt) & TB & Format(0, fmt) & TB & Format(0, fmt) & NL
    
    'Next Period
    MsgBox Msg  ' Display amortization table.
End If
End Function

Bob
 
raskew, thanks for the code, I'll try it, but do you have any idea why it won't handle more than 36 months? Most situations will call for more than 36 months in my scenario.
 

Users who are viewing this thread

Back
Top Bottom