我编写的Excel函数显示#value

时间:2019-05-16 12:10:09

标签: excel vba

我正在尝试计算客户的生命周期价值。客户的价值流失(每年下降一个百分比)。在整个过程中,我需要为客户价值提供NPV。即对于期间1,我在整个期间内搅动该值,然后将其添加到数组中。然后excel移到相邻单元格中的下一个值,并执行相同的操作,但是周期已减小了1个周期。填充阵列后,我将为这些值NPV。

我尝试编写此函数的原因是我需要在一个单元格中完成此计算。我知道我可以在另一张纸上完成此操作。但是,在此期间搅动的每个值都需要有自己的一行。当我有100多岁时,它开始变得多余。

我写了下面的函数来尝试计算这个。我相当确定我对问题的理解是正确的,但是我的VBA技能却不足。任何帮助将不胜感激。

Option Explicit
Function NPVLTV(discount As Double, n As Double, Value As Double, Churn() As Range) As Double

    Dim ValuesChurned() As Range
    ReDim ValuesChurned(n - 1) As Range

    Dim k as Double
    k = Value
    For i = 0 To n - 1
        ValuesChurned(i) = k
        k = Value * (1 - Churn(i)) ^ i 
    Next i

    NPVLTV = NPV(discount, ValuesChurned())

End Function

我希望在整个周期内得到一个单元的净现值的一个值。但是,我遇到了#VALUE错误。我一直在使用此输入作为功能的测试

=NPVLTV(0.025, count(N67:$BO$67) ,336 , N67:$BO$67)

范围只是一个0.01的数组。

0 个答案:

没有答案