【问题标题】:VBA in Excel and Manually Calculating Net Present ValueExcel中的VBA和手动计算净现值
【发布时间】: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 有这方面的公式,但需要手动完成。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    你必须替换

    Dim dr As Long
    

    通过

    dim dr as Double
    

    否则,您的 0.17 折扣率将转换为 long,因此转换为 0

    【讨论】:

    猜你喜欢
    • 2010-10-25
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 2017-07-17
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多