Excel 中分组循环 CF 的净现值
Posted
技术标签:
【中文标题】Excel 中分组循环 CF 的净现值【英文标题】:Net Present Value in Excel for Grouped Recurring CF 【发布时间】:2016-07-13 18:46:50 【问题描述】:下面是 60 个时期的现金流量表。
有一组经常性现金流。 excel 中有没有一种简单的方法来计算所有 60 个期间(每月现金流)的 NPV,而不必创建一个 60 行的表并使用 NPV 公式?
所以 60 个订单项的公式应该是这样的:
=NPV(PERIODIC RATE, VALUES OF CF 1 - 60) + CF0
但是,如果您知道 excel 中存在经常性现金流并且不必枚举所有 60 行,您可以缩短它吗?
提前致谢。
【问题讨论】:
【参考方案1】:没有内置函数可以做到这一点,但我们可以自己构建。这是一个UDF(用户定义函数):
Function myNPV(rate As Double, vl As Range, times As Range)
If vl.Cells.Count <> times.Cells.Count Then Exit Function
Dim vlArr() As Variant
Dim timesArr() As Variant
Dim ovlArr() As Double
Dim i&, j&, t&, cnt&
vlArr = vl.Value
timesArr = times.Value
For i = LBound(vlArr, 1) To UBound(vlArr, 1)
If vlArr(i, 1) <> "" Then
t = t + timesArr(i, 1)
End If
Next i
cnt = 1
ReDim ovlArr(1 To t)
For i = LBound(vlArr, 1) To UBound(vlArr, 1)
If vlArr(i, 1) <> "" Then
For j = 1 To timesArr(i, 1)
ovlArr(cnt) = vlArr(i, 1)
cnt = cnt + 1
Next j
End If
Next i
myNPV = Application.WorksheetFunction.NPV(rate, ovlArr)
End Function
在工作簿中按 Alt-F11。这将打开 VBE。
转到插入并插入一个模块。这将打开一个新模块。复制并粘贴上面的代码。
你可以像任何其他公式一样调用它:
=myNPV(C20/C19,B3:B17,C3:C17)+B2
这有三个标准:每次的费率、金额范围和相应的次数。
【讨论】:
【参考方案2】:您可以使用年金公式
在D1
中使用=1/($B$7/12)*(1-1/(1+$B$7/12)^C1)*B1*1/(1+$B$7/12)^(SUM($C$1:C1)-12)
并复制下来
【讨论】:
谢谢。你能打出你使用变量的财务公式并解释和给出财务背景吗?以上是关于Excel 中分组循环 CF 的净现值的主要内容,如果未能解决你的问题,请参考以下文章