NPV 函数NPV function

返回一个 Double,它基于一系列定期现金流(付款和收款)和贴现率指定投资的净现值。Returns a Double specifying the net present value of an investment based on a series of periodic cash flows (payments and receipts) and a discount rate.


NPV(rate, values())NPV(rate, values( ))

NPV 函数包含以下命名参数The NPV function has these named arguments:

PartPart 说明Description
rate 必需。Required. 指定以小数表示的期间内的贴现率的 DoubleDouble specifying discount rate over the length of the period, expressed as a decimal.
( )values( ) 必需。Required. 用于指定现金流值的双精度数组Array of Double specifying cash flow values. 该数组必须包含至少一个负值(付款)和一个正值(收款)。The array must contain at least one negative value (a payment) and one positive value (a receipt).


投资的净现值是未来一系列付款和收款的当前值。The net present value of an investment is the current value of a future series of payments and receipts.

NPV 函数使用数组中的值的顺序来解释付款和收款的顺序。The NPV function uses the order of values within the array to interpret the order of payments and receipts. 确保按正确的顺序输入付款和收款值。Be sure to enter your payment and receipt values in the correct sequence.

NPV 投资在第一个现金流值的日期之前的一个期间开始,并以数组中的最后一个现金流值结束。The NPV investment begins one period before the date of the first cash flow value and ends with the last cash flow value in the array.

净现值计算基于未来现金流。The net present value calculation is based on future cash flows. 如果第一笔现金流发生在第一个周期的开始, 则必须将第一个值添加到NPV返回的值中, 而不能包含在_values_的现金流值 () 中。If your first cash flow occurs at the beginning of the first period, the first value must be added to the value returned by NPV and must not be included in the cash flow values of values( ).

NPV函数类似于**pv** 函数 (现值), 不同之处在于pv函数允许现金流在周期结束或开始时开始。The NPV function is similar to the PV function (present value) except that the PV function allows cash flows to begin either at the end or the beginning of a period. 与可变的 NPV 现金流值不同,PV 现金流在投资期间必须是固定的。Unlike the variable NPV cash flow values, PV cash flows must be fixed throughout the investment.


此示例使用 NPV 函数返回数组 Values() 中包含的一系列现金流的净现值。This example uses the NPV function to return the net present value for a series of cash flows contained in the array Values(). RetRate 表示固定的内部报酬率。RetRate represents the fixed internal rate of return.

Dim Fmt, Guess, RetRate, NetPVal, Msg
Static Values(5) As Double    ' Set up array.
Fmt = "###,##0.00"    ' Define money format.
Guess = .1    ' Guess starts at 10 percent.
RetRate = .0625    ' Set fixed internal rate.
Values(0) = -70000    ' Business start-up costs.
' Positive cash flows reflecting income for four successive years.
Values(1) = 22000 : Values(2) = 25000
Values(3) = 28000 : Values(4) = 31000
NetPVal = NPV(RetRate, Values())    ' Calculate net present value.
Msg = "The net present value of these cash flows is "
Msg = Msg & Format(NetPVal, Fmt) & "."
MsgBox Msg    ' Display net present value.

另请参阅See also

支持和反馈Support and feedback

有关于 Office VBA 或本文档的疑问或反馈?Have questions or feedback about Office VBA or this documentation? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.