PPmt 函数

应用对象
Microsoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

返回 Double,指定基于定期、固定付款和固定利率的给定年金期间的本金付款。

语法

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

PPmt 函数语法具有以下参数:

参数 说明
rate 必需。 双精度 指定每期利率。 例如,如果您以年利率获得汽车贷款 (年利率) 为 10%,并按月还款,则每期利率为 0.1/12,即 0.0083。
per 必需。 指定 1 到 nper 范围内付款期限的整数。
nper 必需。 指定年金付款总期数的整数。 例如,如果每月还一次期四年的汽车贷款,则贷款总共有 4 * 12 (或 48) 还款期。
PV 必需。 双重 指定一系列未来付款或收据的现值或今天的价值。 例如,当您借钱买车时,贷款金额是您每月支付的汽车付款给贷方的现值。
fv 可选。 指定您在支付最终付款后所需的未来值或现金余额的变体。 例如,贷款的未来值为 0 美元,因为这是最终还款后的价值。 但是,如果您想在 50,000 年内为孩子的教育节省 18 美元,那么 50,000 美元是未来价值。 如果省略,则假定为 0。
type 可选。 指定付款时间支付时间的变体。 如果在付款期结束时到期,请使用 0,如果在期初到期,请使用 1。 如果省略,则假定为 0。

备注

年金是在一段时间内支付的一系列固定现金支付。 年金可以是贷款 (,例如房屋抵押贷款) ,也可以是投资 (,例如每月储蓄计划) 。

rate 和 nper 参数必须使用以相同单位表示的付款期计算。 例如,如果 rate 是使用月计算的,那么 nper 也必须使用月来计算。

对于所有参数,支付的现金 (例如存款到储蓄) 用负数表示;收到的现金 (例如股息支票) 用正数表示。

查询示例

Expression 结果
SELECT FinancialSample.*, PPMT ([AnnualRate]/12,10,[TermInYears]*12,-[LoanAmount],0,0) AS INTPpaid FROM FinancialSample; 返回表 “FinancialSample” 中的所有字段,根据 “AnnualRate” 和 “TermInYears” 计算在本示例中以 “per” (10) 的 “LoanAmount” 为单位支付的本金金额,并将结果显示在 INTPpaid 列中。

VBA 示例

注意

下面的示例演示了在Visual Basic for Applications (VBA) 模块中使用此函数。 有关使用 VBA 的详细信息,请在“搜索”旁边的下拉列表中选择“开发人员参考”,然后在搜索框中输入一个或多个术语。

此示例使用 PPmt 函数计算,当所有付款的价值相同时,特定期间内的付款中有多少是本金。 给定的是) (APR / 12 期利率、) (Period 需要本金部分的还款期、) (TotPmts 还款总数、贷款 (PVal) 的现值或本金、贷款 (FVal) 的未来值,以及一个数字,表明付款是在还款期开始还是结束时到期 (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 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" & 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