Share via


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) & ".")

需求

命名空間 (Namespace)︰Microsoft.VisualBasic

**模組︰**Financial

組件 (Assembly):Visual Basic Runtime Library (在 Microsoft.VisualBasic.dll 中)

請參閱

參考

IRR 函式

MIRR 函式

財務摘要

ArgumentException