IRR 函数
更新:2007 年 11 月
返回一个 Double 数据类型值,指定一系列周期性现金流(支出或收入)的内部收益率。
Function IRR( _
ByRef ValueArray() As Double, _
Optional ByVal Guess As Double = 0.1 _
) As Double
参数
ValueArray
必选。Double 数组,指定现金流的值。数组必须至少包含一个负值(支出)和一个正值(收入)。Guess
可选。对象类型,指定预计的 IRR 函数返回值。如果省略,则 Guess 为 0.1 (10%)。
异常
异常类型 |
错误号 |
条件 |
---|---|---|
数组参数值无效或 Guess <= -1。 |
如果正在升级使用非结构化错误处理方式的 Visual Basic 6.0 应用程序,请参见“错误号”一列。(您可以根据 Number 属性(Err 对象)比较错误号。)然而,如果可能,应当考虑用 Visual Basic 的结构化异常处理概述替换这种错误控制。
备注
内部收益率是指支付和收入以固定时间间隔发生的一笔投资所获得的利率。
IRR 函数用数组中的数值顺序来解释支付和收入的顺序。确保以正确的顺序输入您的支出和收入值。每一时期的现金流不必像年金那样固定不变。
IRR 以迭代方式进行计算。先从 Guess 的值开始,IRR 反复循环进行计算,直到结果的精确度达到 0.00001%。如果经过 20 次尝试还不能得到结果,则 IRR 计算失败。
示例
本示例中,IRR 函数返回包含在数组 Values() 中的一系列现金流(五个)的内部收益率。第一个数组元素是表示业务启动成本的负现金流。其余四个现金流表示随后四年的正现金流。Guess 是估计的内部收益率。
' Define money format.
Dim MoneyFmt As String = "###,##0.00"
' Define percentage format.
Dim PercentFmt As String = "#0.00"
Dim values(4) As Double
' Business start-up costs.
values(0) = -70000
' Positive cash flows reflecting income for four successive years.
values(1) = 22000
values(2) = 25000
values(3) = 28000
values(4) = 31000
' Use the IRR function to calculate the rate of return.
' Guess starts at 10 percent.
Dim Guess As Double = 0.1
' Calculate internal rate.
Dim CalcRetRate As Double = IRR(values, Guess) * 100
' Display internal return rate.
MsgBox("The internal rate of return for these cash flows is " & _
Format(CalcRetRate, CStr(PercentFmt)) & " percent.")
要求
**模块:**Financial
**程序集:**Visual Basic 运行库(在 Microsoft.VisualBasic.dll 中)