我正试图计算几个现金流的净现值( NPV )。但是,当试图引用可选参数(它表示NPV将是连续的复合)时,我得到了#值!而不是有效的净现值
我的VBA代码如下:
Function myNPV(r As Double, CF As Range, Optional rate_type = 0)
Sum = 0
t = 0
For Each Cell In CF
Sum = Sum + Cell.Value / (1 + r) ^ t
t = t + 1
Next Cell
If rate_type = 1 Then
Sum = Sum + Cell.Value / ((Exp(1)) ^ (r * t))
t = t + 1
End If
myNPV = Sum
End Function
第一个公式计算一个非连续的复合净现值,这就是为什么我引入了可选的参数来选择这两个参数。
当测试我的公式如下:"=mynpv(C10, C3:C8, 1)" (C10 = discount rate, C3-C8 = Cash flows and 1 refering to the rate type)
,我只是得到#值!
发布于 2022-03-21 13:07:36
我相信您希望在循环中同时包含这两种内容,然后使用IF来决定执行以下操作:
Function myNPV(r As Double, CF As Range, Optional rate_type = 0)
Sum = 0
t = 0
For Each Cell In CF
If rate_type = 0 Then
Sum = Sum + Cell.Value / (1 + r) ^ t
Else
Sum = Sum + Cell.Value / ((Exp(1)) ^ (r * t))
End If
t = t + 1
Next Cell
myNPV = Sum
End Function
https://stackoverflow.com/questions/71563976
复制