Excel中的VBA和手动计算净现值
Posted
技术标签:
【中文标题】Excel中的VBA和手动计算净现值【英文标题】:VBA in Excel and Manually Calculating Net Present Value 【发布时间】:2020-10-15 19:34:56 【问题描述】:Sub npv()
Dim val As Long
Dim dr As Long
Dim inv As Long
Dim answer As Long
Dim i As Long
dr = Cells(1, 5).Value 'Cells(Row, Column)
inv = Cells(2, 5).Value
val = Cells(1, 1).Value
i = 0
ReDim cashFlow(1 To val) As Long
Do While i < val
i = i + 1
cashFlow(i) = Cells((i + 1), 1)
Loop
i = 0
Do While i < val
i = i + 1
answer = answer + cashFlow(i) / ((1 + dr) ^ i)
Loop
answer = answer - inv
Cells(4, 5).Value = answer
End Sub
您好,我想弄清楚为什么这不会输出正确的 NPV。初始投资为 500,贴现率为 0.17,现金流为 50、150、175、225,它输出的答案为 100.00。它应该是-118.35。我知道 excel 有这方面的公式,但需要手动完成。
【问题讨论】:
【参考方案1】:你必须替换
Dim dr As Long
通过
dim dr as Double
否则,您的 0.17 折扣率将转换为 long
,因此转换为 0
。
【讨论】:
谢谢,它现在可以完美运行了。只是出于好奇,'Variant' 也会起作用吗? 是的,Variant
和 Single
也可以。只需搜索 VBA 数据类型(例如 automateexcel.com/vba/data-types-variables-constants)以上是关于Excel中的VBA和手动计算净现值的主要内容,如果未能解决你的问题,请参考以下文章
VBA:更新后无法自动重新计算 Excel 公式 - 需要手动交互