1.IPmt 函数
返回一个 Double,指定在一段时间内对定期定额支付且利率固定的年金所支付的利息值。
语法
IPmt(rate
, per, nper, pv[, fv[, type]])
IPmt
函数有下列命名参数:
部分
|
描述
|
rate
|
必要。Double 指定每一期的利率。例如,如果有一笔贷款年百分率 (APR) 为百分之十且按月付款的汽车贷款,则每一期的利率为 0.1/12,或 0.0083。
|
per
|
必要。Double 指定在 nper 间范围 1 中的付款周期。
|
nper
|
必要。Double 指定一笔年金的付款总期数。例如,如果在一笔为期四年的汽车贷款中选择按月付款方式,则贷款共有 4 * 12(或 48)个付款期。
|
pv
|
必要。Double,指定未来一系列付款或收款的现值。例如,当借钱买汽车时,向贷方所借金额为将来每月偿付给贷方款项的现值。
|
fv
|
可选。Variant 指定在付清贷款后所希望的未来值或现金结存。例如,贷款的未来值在贷款付清后为 0 美元。但是,如果想要在 18 年间存下 50,000 美元作为子女教育基金,那么 50,000 美元为未来值。如果省略的话,缺省值为 0。
|
type
|
可选。Variant 指定贷款到期时间。如果贷款在贷款周期结束时到期,请使用 0。如果贷款在周期开始时到期,请使用 1。如果省略的话,缺省值为 0。
|
说明
年金是指在一段时间内的一系列固定现金支付。年金可以是贷款(如房屋抵押贷款),也可以是一笔投资(如按月储蓄计划)。
对所有参数,用负数表示现金支出(如储蓄存款),而用正数表示现金收入(如红利支票)。
IPmt 函数示例
本示例使用
IPmt函数来计算每期的付款中有多少是属于利息,其中每期付款金额相同。计算时需给定每期利率(
APR / 12
),利息的付款周期(Period
),付款总期数(TotPmts
),贷款现值或本金(PVal
),贷款的未来值(FVal
)及付款方式,以数值表示期初或期末付款(PayType
)。
Dim FVal, Fmt, PVal, APR, TotPmts, PayType, Period, IntPmt, TotInt, Msg
Const ENDPERIOD = 0, BEGINPERIOD = 1 '
付款方式。
FVal = 0 '
对贷款而言通常为零。
Fmt = "###,###,##0.00" '
定义金额格式。
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 '
确保格式正确。
TotPmts = InputBox("How many monthly payments?")
PayType = MsgBox("Do you make payments at end of the month?", vbYesNo)
If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD
For Period = 1 To TotPmts '
将所有利息求和。
IntPmt = IPmt(APR / 12, Period, TotPmts, -PVal, FVal, PayType)
TotInt = TotInt + IntPmt
Next Period
Msg = "You'll pay a total of " & Format(TotInt, Fmt)
Msg = Msg & " in interest for this loan."
MsgBox Msg '
显示结果。
2. IRR 函数
返回一个 Double,指定一系列周期性现金流(支出或收入)的内部利率。
语法
IRR(values()
[, guess])
IRR
函数有下列命名参数:
部分
|
描述
|
values()
|
必要。Double 数组,指定现金流值。此数组必须至少含有一个负值(支付)和一个正值(收入)。
|
Guess
|
说明
返回的内部利率是在正常的时间间隔内,一笔含有支出及收入的投资得到的利率。
IRR
函数使用数组中数值的顺序来解释支付和收入的顺序。要确保支付和收入的顺序正确。每一时期的现金流不必像年金那样固定不变。
IRR
是利用叠代进行计算。先从
guess
的值开始,
IRR
反复循环进行计算,直到精确度达到
0.00001%
。如果经过
20
次反复叠代测试还不能得到结果,则
IRR
计算失败。
IRR 函数示例
在本示例中,
IRR 函数会计算由数组
Values()
内所含一系列期间的5笔现金流量之实质报酬率(internal rate of return)。第一个数组元素为一负数现金流,代表事业初始成本(事业初始成本)。其余4个正数现金流代表后续4年内的收入状况。
Guess
为实质报酬率之估计值。
Dim Guess, Fmt, RetRate, Msg
Static Values(5) As Double '
声明数组。
Guess = .1 ' Guess
由10%
开始。
Fmt = "#0.00" '
定义百分比的显示格式。
Values(0) = -70000 '
事业初始成本。
'
正数现金流代表连续四年的收入状况。
Values(1) = 22000 : Values(2) = 25000
Values(3) = 28000 : Values(4) = 31000
RetRate = IRR(Values(), Guess) * 100 '
计算实质报酬率。
Msg = "The internal rate of return for these five cash flows is "
Msg = Msg & Format(RetRate, Fmt) & " percent."
MsgBox Msg '
显示实质报酬率。
|
3.NPer 函数
返回一个 Double,指定定期定额支付且利率固定的总期数。
语法
NPer(rate
, pmt, pv[, fv[, type]])
NPer
函数有下列命名参数:
部分
|
描述
|
rate
|
必要。Double 指定每一期的利率。例如,如果有一笔贷款年百分率 (APR) 为百分之十并按月付款的汽车贷款,则每一期的利率为 0.1/12 或 0.0083。
|
pmt
|
必要。Double 指定每一期所付金额。付款金额通常包含本金和利息,且付款金额在年金的有效期间不变。
|
pv
|
必要。Double 指定未来一系列付款或收款的现值。例如,当贷款买一辆汽车时,向贷方所借贷的金额为将来每月偿付给贷方款项的现值。
|
fv
|
可选。Variant 指定在付清贷款后所希望的未来值或现金结存。例如,贷款的未来值在贷款付清后为 0 美元。但是,如果想要在 18 年间存下 50,000 美元作为子女教育基金,那么 50,000 美元为未来值。如果省略的话,缺省值为 0。
|
type
|