Share via


PPmt 関数

定額の支払いを定期的に行い、利率が一定であると仮定して、投資の指定した期の元金を指定する Double を返します。

構文

PPmt(rate, per, nper, pv, [ fv, [ type ]])

PPmt 関数には、次の名前付き引数があります。

パーツ 説明
rate 必須です。 投資の利率を示す倍精度浮動小数点型 ( Double ) の値を指定します。 たとえば、年率 (APR) 10% の自動車ローンを利用して月払いで返済を行う場合、月単位の金利は 0.1/12 = 0.0083 となります。
per 必須。 1 ~ nper の範囲の支払回数を指定する Integer です。
nper 必須。 投資期間全体での支払回数の合計を示す整数型 ( Integer) の値を指定します。 たとえば、4 年間の自動車ローンを月払いにする場合、合計 4 x 12 回 (つまり 48 回) のローンの支払い回数があります。
pv 必須。 将来行われる一連の支払いまたは受領の現在価値 (現時点での価値) を指定する Double です。 たとえば、車を購入するためにお金を借りるときに、ローン金額は、毎月の車の支払いの貸し手に現在の値です。
fv 省略可能。 バリアント型 (Variant) 将来価値、つまり、最後の支払い後の収支の希望額を指定します。 たとえば、ローンの将来価値は、最後の支払い後のローンの価値である 0 円です。 しかし、子供の教育費として 18 年間で 500 万円を貯める場合、将来価値は 500 万円です。 省略すると、0 と見なされます。
type 省略可能。 支払期日を示すバリアント型 ( Variant ) の値を指定します。 各期の期末に支払う場合は 0、各期の期首に支払う場合は 1 を指定します。 省略すると、0 と見なされます。

解説

投資とは、一連の定額の支払いを一定期間にわたって行うことです。 投資には、住宅ローンなどのローンや、毎月の貯蓄プランなどの出資があります。

レートnper引数は、同じ単位で表される支払期間を使用して計算する必要があります。 たとえば、 rate を月単位で計算する場合は、 nper も月単位で計算する必要があります。

すべての引数に関して、出金 (定額預金の支払など) は負の値で表し、入金 (配当金など) は正の値で表します。

この例では、PPmt 関数を使用して、すべての支払いが同じ金額の場合に特定の期に支払われる元金の額を計算します。 期間ごとの利率 (APR / 12)、元本部分が必要な支払期間 ()、支払総数 (Period)、ローンの現在価値または元金 (TotPmts)、ローンの将来価値 (PValFVal)、支払期日の開始時または終了時PayType () を示す数値が指定されます。

Dim NL, TB, Fmt, FVal, PVal, APR, TotPmts, PayType, Payment, Msg, MakeChart, Period, P, I
Const ENDPERIOD = 0, BEGINPERIOD = 1    ' When payments are made.
NL = Chr(13) & Chr(10)    ' Define new line.
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" & NL
    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 + .005) * 100) / 100)    ' Round principal.
        I = Payment - P
        I = (Int((I + .005) * 100) / 100)    ' Round interest.
        Msg = Msg & Period & TB & Format(Payment, Fmt)
        Msg = Msg & TB & Format(P, Fmt) & TB & Format(I, Fmt) & NL
    Next Period
    MsgBox Msg    ' Display amortization table.
End If

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。