首页 > 解决方案 > 在 Excel 中使用自定义函数计算 IRR 时需要帮助

问题描述

我正在使用 Excel 表来跟踪我的所有投资。为了计算我的 IRR,我需要以特定方式输入值以便 Excel 进行计算。所以我决定创建一个自定义函数。我将为这个自定义函数提供以下值。

  1. 总投资额
  2. 投资期限
  3. 投资的最终价值。

我使用以下代码来创建自定义函数。但我得到了#VALUE错误

Function ROI(fundInvested, timePeriod, finalValue)
    
    eachValue = fundInvested / timePeriod
    Dim cashFlow() As Double
    Dim n As Integer
        For n = 0 To (timePeriod - 1)
            cashFlow(n) = -1 * eachValue
        Next n
    cashFlow(timePeriod) = finalValue
    ROI = IRR(cashFlow)
 
End Function

我的公式哪里错了?

标签: excelvbaexcel-formula

解决方案


所以你需要像这样重新调整它:

Function ROI(fundInvested, timePeriod, finalValue)
    
    eachValue = fundInvested / timePeriod
    Dim cashFlow() As Double
    Dim n As Integer
    ReDim cashFlow(0 to timePeriod)
    'ReDim cashFlow(timePeriod) is also correct - see @Chris Nielsen comment.

        For n = 0 To (timePeriod - 1)
            cashFlow(n) = -1 * eachValue
        Next n

    cashFlow(timePeriod) = finalValue
    ROI = IRR(cashFlow)
 
End Function

在此处输入图像描述

笔记

- 在没有Option Base语句的情况下,数组下标从零开始。

- 建议在 ReDim 语句中同时设置下限和上限,但如果省略下限而仅指定上限,则下限取自当前运行的 Option Base,在这种情况下为零,因此

ReDim cashFlow(0 to timePeriod)

ReDim cashFlow(timePeriod)

是等价的。


推荐阅读