VB 财务函数

原创 2007年10月12日 17:44:00
 

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。
 
说明
年金是指在一段时间内的一系列固定现金支付。年金可以是贷款(如房屋抵押贷款),也可以是一笔投资(如按月储蓄计划)。
在支付期间必须用相同的单位计算 rate nper 参数。例如,如果 rate 用月份计算,则 nper 也必须用月份计算。
对所有参数,用负数表示现金支出(如储蓄存款),而用正数表示现金收入(如红利支票)。
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()
Guess
可选。Variant,指定 IRR 返回的估算值。如果省略,guess 0.1 (10%)
 
说明
返回的内部利率是在正常的时间间隔内,一笔含有支出及收入的投资得到的利率。
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
可选。Variant 指定贷款到期时间。如果贷款是在贷款周期结束时到期,请使用 0,如果贷款是在周期开始时到期,请使用 1。如果省略的话,缺省值为 0。
 
说明
年金是在一段时间内一系列固定现金支付。年金可以是贷款(如房屋抵押贷款),也可以是一笔投资(如按月储蓄计划)。
NPer 函数示例
本示例使用 NPer函数计算分期偿还贷款之总期数,贷款金额为 PVal。计算时尚需给定每期利率(APR / 12),每期付款金额(Payment),贷款的未来值(FVal)及付款方式,以数值表示期初或期末付款(PayType)。
Dim FVal, PVal, APR, Payment, PayType, TotPmts
Const ENDPERIOD = 0, BEGINPERIOD = 1   ' 付款方式。
FVal = 0   ' 对贷款而言通常为零。
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   ' 确保格式正确。
Payment = InputBox("How much do you want to pay each month?")
PayType = MsgBox("Do you make payments at the end of month?", vbYesNo)
If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD
TotPmts = NPer(APR / 12, -Payment, PVal, FVal, PayType)
If IntTotPmts <> TotPmts Then TotPmts = IntTotPmts + 1
MsgBox "It will take you " & TotPmts & " months to pay off your loan."
 
4.NPV 函数      
返回一个 Double,指定根据一系列定期的现金流(支付和收入)和贴现率而定的投资净现值。
语法
NPV(rate, values())
NPV函数有下列命名参数
部分
描述
rate
必要。Double 指定在一期间内的贴现率,用十进制表示。
values()
 
说明
投资的净现值是未来一系列支付或收入的当前价值。
NPV函数使用数组中数值的顺序来解释支付和收入的顺序。要确保支付和收入值是用正确的顺序输入的。
NPV 投资在第一笔现金流值之前开始计算周期,而结束于数组中最后的现金流值。
净现值是根据未来的现金流进行计算的。如果第一笔现金流在第一期开始时发生,那么 NPV 返回的值必须加上第一笔值才是净现值。而且 values() 数组不可包含第一笔值。
NPV函数与 PV 函数(现值)相似,只是 PV 函数在一个期间的开始或结束时才允许有现金流。与可变的 NPV 现金流值不同,PV的现金流在整个投资期间必须固定。
NPV 函数示例
本示例使用 NPV函数根据数组 Values() 内所含的一系列现金流量计算投资之净现值。RetRate 表示固定之实质报酬率。
Dim Fmt, Guess, RetRate, NetPVal, Msg
Static Values(5) As Double   ' 声明数组。
Fmt = "###,##0.00"   ' 定义金额格式。
Guess = .1   ' Guess  10% 开始。
RetRate = .0625   ' 设置固定实质报酬率。
Values(0) = -70000   ' 事业初始成本。
' 正数现金流代表连续四年的收入状况。
Values(1) = 22000 : Values(2) = 25000
Values(3) = 28000 : Values(4) = 31000
NetPVal = NPV(RetRate, Values())   ' 计算投资净现值。
Msg = "The net present value of these cash flows is "
Msg = Msg & Format(NetPVal, Fmt) & "."
MsgBox Msg   ' 显示投资净现值。
 
5.PPmt 函数
返回一个 Double,指定在定期定额支付且利率固定的年金的指定期间内的本金偿付额。
语法
PPmt(rate, per, nper, pv[, fv[, type]])
PPmt函数有下列命名参数
部分
描述
rate
必要。Double 指定每一期的利率。例如,如果有一笔贷款年百分比率 (APR) 为百分之十且按月付款的汽车贷款,则每一期的利率为 0.1/12 或 0.0083。
per
必要。Integer指定在 nper 间范围 1 中的付款周期。
nper
必要。Integer 指定一笔年金的付款总期数。例如,如果对一笔为期四年的汽车贷款选择按月付款,则贷款共有 4 * 12(或 48)个付款期。
pv
必要。Double 指定未来一系列付款或收款的现值。例如,当贷款买一辆汽车时,向贷方所借贷的金额为将来每月偿付给贷方款项的现值。
fv
可选。Variant 指定在付清贷款后所希望的未来值或现金结存值。例如,贷款的未来值在贷款付清后为 0 美元。但是,如果想要在 18 年间存下 50,000 美元作为子女教育基金,那么 50,000 美元为未来值。如果省略的话,缺省值为 0。
type
可选。Variant 指定贷款到期时间。如果贷款是在贷款周期结束时到期,则请使用 0。如果贷款是在周期开始时到期,则请使用 1。如果省略的话,缺省值为 0。
 
说明
年金是在一段时间内一系列固定现金支付。年金可以是贷款(如房屋抵押贷款),也可以是一笔投资(如按月储蓄计划)。
在支付期间必须用相同的单位计算 rate nper 参数。例如,如果 rate 用月份计算,则 nper 也必须用月份计算。
对所有参数,用负数表示现金支出(如储蓄存款),而用正数表示现金收入(如红利支票)。
PPmt 函数示例
本示例使用 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   ' 付款方式。
NL = Chr(13) & Chr(10)   ' 定义换行字符。
TB = Chr(9)   ' 定义 tab
Fmt = "###,###,##0.00"   ' 定义金额格式。
FVal = 0   ' 对贷款而言通常为零。
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 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)   ' 询问是否要显示。
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)   ' 四舍五入计算本金。
      I = Payment - P
      I = (Int((I + .005) * 100) / 100)   ' 四舍五入计算利息。
      Msg = Msg & Period & TB & Format(Payment, Fmt)
      Msg = Msg & TB & Format(P, Fmt) & TB & Format(I, Fmt) & NL
   Next Period
   MsgBox Msg   ' 显示分期偿还表。
End If
 
6.Pmt 函数
返回一个 Double,指定根据定期定额支付且利率固定的年金支付额。
语法
Pmt(rate, nper, pv[, fv[, type]])
Pmt函数有下列命名参数
部分
描述
rate
必要。Double 指定每一期的利率。例如,如果有一笔贷款年百分比率 (APR) 为百分之十且按月付款的汽车贷款,则每一期的利率为 0.1/12 或 0.0083。
nper
必要。Integer 指定一笔年金的付款总期数。例如,如果对一笔为期四年的汽车贷款选择按月付款,则贷款共有 4 * 12(或 48)个付款期。
pv
必要。Double 指定未来一系列付款或收款的现值。例如,当贷款买一辆汽车时,向贷方所借贷的金额为将来每月偿付给贷方款项的现值。
fv
可选。Variant 指定在付清贷款后所希望的未来值或现金结存。例如,贷款的未来值在贷款付清后为 0 美元。但是,如果想要在 18 年间存下 50,000 美元作为子女教育基金,那么 50,000 美元为未来值。如果省略的话,缺省值为 0。
type
可选。Variant,指定贷款到期时间。如果贷款是在贷款周期结束时到期,请使用 0。如果贷款是在周期开始时到期,则请使用 1。如果省略的话,缺省值为 0。
 
说明
年金是在一段时间内一系列固定现金支付,年金可以是贷款(如房屋抵押贷款),也可以是一笔投资(如按月储蓄计划)。
在支付期间必须用相同的单位计算 rate nper 参数。例如,如果 rate 用月份计算,则 nper 也必须用月份计算。
对所有参数,用负数表示现金支出(如储蓄存款),而用正数表示现金收入(如红利支票)。
Pmt 函数示例
本示例使用 Pmt函数计算以定期方式偿还贷款之每期月付款金额。计算时需给定每期利率(APR / 12),付款总期数(TotPmts),贷款的现值或本金(PVal),贷款的未来值(FVal)及付款方式,以数值表示期初或期末付款(PayType)。
Dim Fmt, FVal, PVal, APR, TotPmts, PayType, Payment
Const ENDPERIOD = 0, BEGINPERIOD = 1   ' 付款方式。
Fmt = "###,###,##0.00"   ' 定义金额格式。
FVal = 0   ' 对贷款而言通常为零。
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 will you make?")
PayType = MsgBox("Do you make payments at the end of month?", vbYesNo)
If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD
Payment = Pmt(APR / 12, TotPmts, -PVal, FVal, PayType)
MsgBox "Your payment will be " & Format(Payment, Fmt) & " per month."
 
7.PV 函数
返回一个 Double 指定在未来定期、定额支付且利率固定的年金现值。
语法
PV(rate, nper, pmt[, fv[, type]])
PV函数有下列命名参数
部分
描述
rate
必要。Double 指定每一期的利率。例如,如果有一笔贷款年百分比率 (APR) 为百分之十且按月付款的汽车贷款,则每一期的利率为 0.1/12 或 0.0083。
nper
必要。Integer 指定一笔年金的付款总期数。例如,如果对一笔为期四年的汽车贷款选择按月付款,则贷款共有 4 * 12(或 48)个付款期。
pmt
必要。Double 指定每一期的付款金额。付款金额通常包含本金和利息,且此付款金额在年金的有效期间不变。
fv
可选。Variant,指定在付清贷款后所希望的未来值或现金结存。例如,贷款的未来值在贷款付清后为 0 美元。但是,如果想要在 18 年间存下 50,000 美元作为子女教育基金,那么 50,000 美元为未来值。如果省略的话,缺省值为 0。
type
可选。Variant 指定贷款到期时间。如果贷款是在贷款周期结束时到期,则请使用 0。如果贷款是在周期开始时到期,则请使用 1。如果省略的话,缺省值为 0。
 
说明
年金是在一段时间内一系列固定现金支付。年金可以是贷款(如房屋抵押贷款),也可以是一笔投资(如按月储蓄计划)。
在支付期间必须用相同的单位计算 rate nper 参数。例如,如果 rate 用月份计算,则 nper 也必须用月份计算。
对所有参数,现金支出(如储蓄存款)用负数表示,而现金收入(如红利支票)用正数表示。
PV 函数示例
在本示例中,PV 函数计算一笔养老金的现值,该养老金将以每年支付 $50,000 的方式,分二十年来支付 $1,000,000 之总金额。计算时给定值为年利率期望值(APR),付款总期数(TotPmts),每期付款金额(YrIncome),未来总值(FVal)以及付款方式,以数值表示期初或期末付款(PayType)。请注意,YrIncome 是一个负数,因为它代表每年从养老金支付出去的现金。
Dim Fmt, APR, TotPmts, YrIncome, FVal, PayType, PVal
Const ENDPERIOD = 0, BEGINPERIOD = 1   ' 付款方式。
Fmt = "###,##0.00"   ' 定义金额格式。
APR = .0825   ' 年利率。
TotPmts = 20   ' 付款总期数。
YrIncome = 50000   ' 每年收到金额。
FVal = 1000000   ' 未来总值。
PayType = BEGINPERIOD   ' 期初付款。
PVal = PV(APR, TotPmts, -YrIncome, FVal, PayType)
MsgBox "The present value is " & Format(PVal, Fmt) & "."
 
8.FV 函数
返回一个 Double,指定未来的定期定额支付且利率固定的年金。
语法
FV(rate, nper, pmt[, pv[, type]])
FV函数有下列命名参数
部分
描述
rate
必要。Double,指定每一期的利率。例如,如果有一笔贷款年百分率 (APR) 为百分之十且按月付款的汽车贷款,则利率为 0.1/12 或 0.0083。
nper
必要。Integer,指定一笔年金的付款总期限。例如,如果对一笔为期四年的汽车贷款选择按月付款方式,则贷款期限共有 4 * 12(或 48)个付款期。
pmt
必要。Double 指定每一期的付款金额。付款金额通常包含本金和利息,而且此付款金额在年金的有效期间是不会改变的。
pv
可选。Variant指定未来一系列付款(或一次付清款项)的现值。例如,当借钱买一辆汽车时时,向贷方所借的金额为未来每月付款给贷方的现值。如果省略的话,缺省值为 0。
type
可选。Variant,指定贷款到期时间。如果贷款在贷款周期结束时到期,请使用 0。如果贷款在周期开始时到期,请使用 1。如果省略的话,缺省值为 0。
 
说明
年金是一段时间内一系列固定现金支付。年金可以是贷款(如房屋抵押贷款),也可以是一笔投资(如按月储蓄计划)。
在支付期间,必须用相同的单位来计算 rate nper 参数。例如,如果 rate 用月份来计算,则 nper 也必须用月份来计算。
对所有参数,用负数表示现金支出(如储蓄存款),而用正数表示现金收入(如红利支票)。
FV 函数示例
本示例使用 FV函数计算某项投资的未来价值,计算时给定每期的利率(APR / 12),投资的总期数(TotPmts),每期的投资额(Payment),已投资的现额(PVal)及付款方式(以数值表示期初或期末付款(PayType))。请注意,因为 Payment 代表支付出去的现金,故其为负数。
Dim Fmt, Payment, APR, TotPmts, PayType, PVal, FVal
Const ENDPERIOD = 0, BEGINPERIOD = 1   ' 付款方式。
Fmt = "###,###,##0.00"   ' 定义金额格式。
Payment = InputBox("How much do you plan to save each month?")
APR = InputBox("Enter the expected interest 年利率.")
If APR > 1 Then APR = APR / 100   ' 确保格式正确。
TotPmts = InputBox("For how many months do you expect to save?")
PayType = MsgBox("Do you make payments at the end of month?", vbYesNo)
If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD
PVal = InputBox("How much is in this savings account now?")
FVal = FV(APR / 12, TotPmts, -Payment, -PVal, PayType)
MsgBox "Your savings will be worth " & Format(FVal, Fmt) & "."
 
9.Rate 函数
返回一个 Double,指定每一期的年金利率。
语法
Rate(nper, pmt, pv[, fv[, type[, guess]]])
Rate函数有下列命名参数
部分
描述
nper
必要。Double 指定一笔年金的付款总期数。例如,如果对一笔为期四年的汽车贷款选择按月付款,则贷款共有 4 * 12(或 48)个付款期。
pmt
必要。Double,指定每一期的付款金额。付款金额通常包含本金和利息,且此付款金额在年金的有效期间不变。
pv
必要。Double 指定未来一系列付款或收款的现值。例如,当贷款买一辆汽车时,向贷方所借贷的金额为将来每月偿付给贷方款项的现值。
fv
可选。Variant 指定在付清贷款后所希望的未来值或现金结存。例如,贷款的未来值在贷款付清后为 0 美元。但是,如果想要在 18 年间存下 50,000 美元作为子女教育基金,那么 50,000 美元为未来值。如果省略的话,缺省值为 0。
type
可选。Variant,指定贷款到期时间,如果贷款是在贷款周期结束时到期,则请使用 0。如果贷款是在周期开始时到期,则请使用 1。如果省略的话,缺省值为 0。
guess
可选。Variant 指定 Rate 返回的估算值。如果省略,则 guess 0.1 (10%)
 
说明
年金是在一段时间内的一系列固定现金支付,年金可以是贷款(如房屋抵押贷款)或是一笔投资(如按月储蓄计划)。
Rate 是叠代计算的。先从 guess 的值开始,Rate 反复循环计算,直到精确度达到 0.00001%。如果经过 20 次叠代测试还不能得到结果,则 Rate 计算失败。如果猜测是 10% Rate 计算失败,则请试用不同的 guess.值。
Rate 函数示例
本示例使用 Rate函数计算某贷款的利率,计算时需给定付款总期数(TotPmts),每期偿还贷款之金额(Payment),贷款的现值或本金(PVal),贷款的未来值(FVal), 付款方式,以数值表示期初或期末付款(PayType),及利率的约略估计值(Guess)。
Dim Fmt, FVal, Guess, PVal, Payment, TotPmts, PayType, APR
Const ENDPERIOD = 0, BEGINPERIOD = 1   ' 付款方式。
Fmt = "##0.00"   ' 定义百分比的显示格式。
FVal = 0   ' 对贷款而言通常为零。
Guess = .1   ' 利率估计值为 10%
PVal = InputBox("How much did you borrow?")
Payment = InputBox("What's your monthly payment?")
TotPmts = InputBox("How many monthly payments do you have to make?")
PayType = MsgBox("Do you make payments at the end of the month?", _
vbYesNo)
If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD
APR = (Rate(TotPmts, -Payment, PVal, FVal, PayType, Guess) * 12) * 100
MsgBox "Your interest rate is " & Format(CInt(APR), Fmt) & " percent."
 
10.MIRR 函数   
返回一个 Double,指定一系列修改过的周期性现金流(支出或收入)的内部利率。
语法
MIRR(values(), finance_rate, reinvest_rate)
MIRR函数有下列命名参数
部分
描述
values()
finance_rate
必要。Double 指定财务成本上的支付利率。
reinvest_rate
必要。Double 指定由现金再投资所得利率。
 
说明
修改过的返回内部利率是指在用不同的利率计算支出和收入时的内部利率。MIRR 函数既考虑投资成本 (finance_rate),也考虑现金再投资所得利率 (reinvest_rate)
finance_rate reinvest_rate 参数是用十进制数值表示的百分比。例如,0.12 表示百分之十二。
MIRR函数用数组中的数值顺序来解释支付和收入的顺序。要确保支付和收入的输入顺序正确。
MIRR 函数示例
本示例使用 MIRR函数计算由数组 Values() 内所含一系列期间现金流量之修正过的实质报酬率。LoanAPR 代表财务成本上的支付利息利率,而 InvAPR 则代表由现金再投资上所得到的利息利率。
Dim LoanAPR, InvAPR, Fmt, RetRate, Msg
Static Values(5) As Double   ' 声明数组。
LoanAPR = .1   ' 贷款利率。
InvAPR = .12   ' 再投资利率。
Fmt = "#0.00"   ' 定义金额格式。
Values(0) = -70000   ' 事业初始成本。
' 正数现金流代表连续四年的收入状况。
Values(1) = 22000 : Values(2) = 25000
Values(3) = 28000 : Values(4) = 31000
RetRate = MIRR(Values(), LoanAPR, InvAPR)   ' 计算实质报酬率。
Msg = "The modified internal rate of return for these five cash flows is"
Msg = Msg & Format(Abs(RetRate) * 100, Fmt) & "%."
MsgBox Msg   ' 显示实质报酬率。
 
11.SLN 函数   
返回一个 Double,在一期里指定一项资产的直线折旧。
语法
SLN(cost, salvage, life)
SLN函数有下列命名参数
部分
描述
cost
必要。Double 指定资产的初始成本。
salvage
必要。Double 指定资产在可用年限结束后的价值。
life
必要。Double 指定资产的可用年限。
 
说明
折旧期间必须用与 life 参数相同的单位表示。所有参数都必须是正数。
SLN 函数示例
本示例使用 SLN函数以“直线折旧”(straight-line depreciation)法计算某项资产在一期之内的折旧,计算时须给定资产的初始成本(InitCost),资产在可用年限退出后的价值(SalvageVal)及资产的可用年限(LifeTime)。
Dim Fmt, InitCost, SalvageVal, MonthLife, LifeTime, PDepr
Const YEARMONTHS = 12   ' 一年之中的月份数。
Fmt = "###,##0.00"   ' 定义金额格式。
InitCost = InputBox("What's the initial cost of the asset?")
SalvageVal = InputBox("What's the asset's value at the end of its useful life?")
MonthLife = InputBox("What's the asset's useful life in months?")
Do While MonthLife < YEARMONTHS   ' 确保计算期间大于等于一年。
   MsgBox "Asset life must be a year or more."
   MonthLife = InputBox("What's the asset's useful life in months?")
Loop
LifeTime = MonthLife / YEARMONTHS   ' 将月份数转成年份数。
If LifeTime <> Int(MonthLife / YEARMONTHS) Then
   LifeTime = Int(LifeTime + 1)   ' 四舍五入至最接近的年份。
End If
PDepr = SLN(InitCost, SalvageVal, LifeTime)
MsgBox "The depreciation is " & Format(PDepr, Fmt) & " per year."
 
12.DDB 函数  
返回一个 Double,指定一笔资产在一特定期间内的折旧。可使用双下落收复平衡方法或其它指定的方法进行计算。
语法
DDB(cost, salvage, life, period[, factor])
DDB函数具有下列命名参数
部分
描述
cost
必要。Double 指定资产的初始成本。
salvage
必要。Double.指定使用年限结束时的资产价值。
life
必要。Double 指定资产可用的可用年限。
period
必要。Double 指定计算资产折旧所用的那一期间。
factor
可选。Variant 指定收复平衡下落时的速度。如果省略的话,2(双下落方法)为缺省值。
 
说明
双下落收复平衡方法用加速利率法计算折旧。在第一段时期,折旧为最高,而在接下来的期间内降低。
life period 参数必须用相同的单位表示。例如,如果 life 用月份表示,则 period 也必须用月份表示。所有参数都必须是正值。
DDB函数使用下列公式计算在一定时期后的折旧:
折旧 / period = ((cost alvage) * factor) / life
DDB 函数示例
本示例使用 DDB函数来计算某项资产在一特定期间内的折旧。计算时需给定资产的初始成本(InitCost),使用年限退出时所余的价值(SalvageVal),以“年”为单位之可用的生命长度(LifeTime),以及所要计算折旧的期间年限(Depr)。
Dim Fmt, InitCost, SalvageVal, MonthLife, LifeTime, DepYear, Depr
Const YRMOS = 12   ' 一年之中的月份数。
Fmt = "###,##0.00"
InitCost = InputBox("What's the initial cost of the asset?")
SalvageVal = InputBox("Enter the asset's value at end of its life.”)
MonthLife = InputBox("What's the asset's useful life in months?")
Do While MonthLife < YRMOS   ' 确保计算期间大于等于一年。
   MsgBox "Asset life must be a year or more."
   MonthLife = InputBox("What's the asset's useful life in months?")
Loop
LifeTime = MonthLife / YRMOS   ' 将月份数转成年份数。
If LifeTime <> Int(MonthLife / YRMOS) Then
   LifeTime = Int(LifeTime + 1)   ' 四舍五入至最接近的年份。
End If 
DepYear = CInt(InputBox("Enter year for depreciation calculation."))
Do While DepYear < 1 Or DepYear > LifeTime
   MsgBox "You must enter at least 1 but not more than " & LifeTime
   DepYear = InputBox("Enter year for depreciation calculation.")
Loop
Depr = DDB(InitCost, SalvageVal, LifeTime, DepYear)
MsgBox "The depreciation for year " & DepYear & " is " & _
Format(Depr, Fmt) & "."
 
13.SYD 函数
返回一个 Double,指定某项资产在一指定期间用年数总计法计算的折旧。
语法
SYD(cost, salvage, life, period)
SYD函数有下列命名参
部分
描述
cost
必要。Double 指定资产的初始成本。
salvage
必要。Double 指定资产在可用年限结束后的价值。
life
必要。Double 指定资产的可用年限。
period
必要。Double 指定计算资产折旧所用的那一期间。
 
说明
必须用相同的单位表示 life period 参数。例如,如果 life 用月份表示,则 period 也必须用月份表示。所有参数都必须是正数。
SYD 函数示例
本示例使用 SYD函数计算某项资产在指定期间内的折旧,计算时需给定资产初始成本(InitCost),资产在可用年限退出后的价值(SalvageVal)及资产的可用年限(LifeTime)。计算折旧的以年为单位的期间为 PDepr
Dim Fmt, InitCost, SalvageVal, MonthLife, LifeTime, DepYear, PDepr
Const YEARMONTHS = 12   ' 一年之中的月份数。
Fmt = "###,##0.00"   ' 定义金额格式。
InitCost = InputBox("What's the initial cost of the asset?")
SalvageVal = InputBox("What's the asset's value at the end of its life?")
MonthLife = InputBox("What's the asset's useful life in months?")
Do While MonthLife < YEARMONTHS   ' 确保计算期间大于等于一年。
   MsgBox "Asset life must be a year or more."
   MonthLife = InputBox("What's the asset's useful life in months?")
Loop
LifeTime = MonthLife / YEARMONTHS   ' 将月份数转成年份数。
If LifeTime <> Int(MonthLife / YEARMONTHS) Then
   LifeTime = Int(LifeTime + 1)   ' 四舍五入至最接近的年份。
End If 
DepYear = CInt(InputBox("For which year do you want depreciation?"))
Do While DepYear < 1 Or DepYear > LifeTime
   MsgBox "You must enter at least 1 but not more than " & LifeTime
   DepYear = CInt(InputBox("For what year do you want depreciation?"))
Loop
PDepr = SYD(InitCost, SalvageVal, LifeTime, DepYear)
MsgBox "The depreciation for year " & DepYear & " is " & Format(PDepr, Fmt) & "."
 

Linq中的TakeWhile和SkipWhile

接着上一篇:Linq中的Take和Skip  (http://blog.csdn.net/joyhen/article/details/24504219) fdsaf...
  • Joyhen
  • Joyhen
  • 2014年04月26日 01:20
  • 4685

VB 财务函数

 1.IPmt 函数      返回一个 Double,指定在一段时间内对定期定额支付且利率固定的年金所支付的利息值。语法IPmt(rate, per, nper, pv[, fv[, type]])...
  • ANZI57066381
  • ANZI57066381
  • 2007年10月12日 17:44
  • 2136

VB函数大全

VB函数大全   Calendar 常数 可在代码中的任何地方用下列常数代替实际值: 常数 值 描述 vbCalGreg 0 指出使用的是阳历。 vbCalHijri 1 指出使...
  • hlzs_01
  • hlzs_01
  • 2012年03月14日 15:50
  • 9674

VB内部函数(三)——财务函数

6.10 财务函数 函数名 功能 示例 DDB 返回一个 Double,指定一笔资产在一特定期间内的折旧。可使用双下落收复平衡方法或其...
  • oBuDaoWeng
  • oBuDaoWeng
  • 2012年11月17日 22:49
  • 441

python写的模块:财务管理中关于时间价值的函数

因为工作关系经常需要计算终值、现值、利率等,所以把经常需要用的财务管理中关于时间价值的函数写成了模块。 #!/usr/bin/python#-*- coding: utf8 -*-u财务管理中与时间价...
  • rehung
  • rehung
  • 2007年09月04日 13:39
  • 2655

累计折旧

“累计折旧”账户属于资产类的备抵调整账户,其结构与一般资产账户的结构刚好相反,累计折旧是贷方登记增加,借方登记减少,余额在贷方。累计折旧指企业在报告期末提取的各年固定资产折旧累计数。该指标按会计“资产...
  • ttpage
  • ttpage
  • 2013年06月24日 13:50
  • 423

公司财务系统源码20131219

  • 2016年05月17日 17:24
  • 7.46MB
  • 下载

[VB]常用函数

(一)类型转换类函数1. CType(X)[格式]:P=CBool(X) 将X转换为"布尔"(Boolean)类型P=CByte(X) 将X转换为"字节"(Byte)类型P=CCur(X) 将X转...
  • zuodc
  • zuodc
  • 2007年10月25日 10:52
  • 9927

[VB学习中]之五:过程与函数

子过程(Sub)的定义事件过程窗体事件过程Private  Sub Form_事件名([参数列表])  [局部变量和常数声明]  语句块End Sub说明:(1)窗体事件过程名由Form_事件名组成,...
  • dzmiao
  • dzmiao
  • 2004年12月27日 22:05
  • 1445

VB.NET是怎样做到的

VB.net能够实现很多C#不能做到的功能,如When语句、Optional参数、局部Static变量、对象实例访问静态方法、Handles绑定事件、On Error处理异常、Object直接后期绑定...
  • psongchao
  • psongchao
  • 2006年02月26日 03:02
  • 1312
收藏助手
不良信息举报
您举报文章:VB 财务函数
举报原因:
原因补充:

(最多只允许输入30个字)