我有一个 UDF,用于计算一年内的增长结转。例如,如果第三和第四季度的增长为零,则在第二季度计算年度增长率。在这种情况下,我需要上一年第四季度和今年前两个季度的增长。
计算或编程起来并不困难。为了方便使用,接收者大多倾向于只将最后一个观察点作为函数的输入。其他输入是我拥有的观察数据的四分之一数。在这种情况下,它将是CarryOver(C16,2)
通过这种方式,如果另一个过去的值发生变化,它不会更新我的 UDF。我可以通过使用来强制执行,Application.Volatile
但首先,如果使用的值基于引用另一张表的公式,它似乎不起作用。更根本的是,我可以提前计算哪些单元格将与两个输入一起使用(最后一个数据的单元格,我拥有的季度数,因此在这种情况下:),C11:C16
因此可能有一种方法可以告诉 Excel 每次隐含单元格中的一个值发生变化时计算这个 UDF,这比选项更好volatile
。这可行吗?
编辑:我的 UDF 的核心是:
Public Function CarryOver(DerniereDonneeDure As Range, AcquisAuMoment_T_plus_X As Integer)
Dim Trim As Double
Trim = 100
Ligne = DerniereDonneeDure.Row - AcquisAuMoment_T_plus_X + 1
Colonne = DerniereDonneeDure.Column
For i = -4 To -1
Trim = Trim * (1 + Cells(Ligne + i, Colonne).Value)
Ecoule = Ecoule + Trim
Next
For j = 0 To AcquisAuMoment_T_plus_X - 1
Trim = Trim * (1 + Cells(Ligne + j, Colonne).Value)
Encours = Encours + Trim
Next
For j = AcquisAuMoment_T_plus_X To 3
Encours = Encours + Trim
Next
Acquis = Encours / Ecoule - 1
End Function