NPV 函数

更新:2007 年 11 月

返回一个 Double 数据类型值,指定根据一系列周期性现金流(支付和收入)和贴现率而定的投资净现值。

Function NPV( _
   ByVal Rate As Double, _
   ByRef ValueArray() As Double _
) As Double

参数

  • Rate
    必选。Double 数据类型,指定在某期间内的贴现率,用小数表示。

  • ValueArray
    必选。Double 数组,指定现金流的值。数组必须至少包含一个负值(支出)和一个正值(收入)。

异常

异常类型

错误号

条件

ArgumentException

5

ValueArray 为 Nothing,ValueArray 的秩 <> 1,或 Rate = -1

如果正在升级使用无结构错误处理的 Visual Basic 6.0 应用程序,请参见“错误号”一列。(您可以根据 Number 属性(Err 对象)比较错误号。)然而,如果可能,应当考虑用 Visual Basic 的结构化异常处理概述替换这种错误控制。

备注

投资的净现值是未来一系列支付或收入的当前价值。

NPV 函数用数组中的数值顺序来解释支付和收入的顺序。确保以正确的顺序输入您的支出和收入值。

NPV 投资在第一笔现金流资金值日期之前开始一个周期,而结束于数组中最后的现金流资金值。

净现值是根据未来的现金流进行计算的。如果第一笔现金流发生在第一期开始时,那么第一笔值必须加上 NPV 所返回的值,而且 ValueArray 的现金流资金值必须不包括第一笔值。

NPV 函数与 PV 函数(现值)相似,只是 PV 函数允许现金流既可以在期初开始,也可以在期末开始。与可变的 NPV 现金流资金值不同,PV 的现金流在整个投资期间必须固定。

示例

本示例使用 NPV 函数来返回数组 values() 中包含的一系列现金流的净现值。返回值存储在 FixedRetRate 中,表示固定内部回报率。

' 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 NPV function to calculate the net present value.
' Set fixed internal rate.
Dim FixedRetRate As Double = 0.0625
' Calculate net present value.
Dim NetPVal As Double = NPV(FixedRetRate, values)
' Display net present value.
MsgBox("The net present value of these cash flows is " & _
    Format(NetPVal, MoneyFmt) & ".")

要求

命名空间:Microsoft.VisualBasic

**模块:**Financial

**程序集:**Visual Basic 运行库(在 Microsoft.VisualBasic.dll 中)

请参见

参考

IRR 函数

MIRR 函数

财务摘要

ArgumentException