結果を変える可能性があるが直接パラメータではないセルを事前に知っているUDFを更新する

結果を変える可能性があるが直接パラメータではないセルを事前に知っているUDFを更新する

1 年間の成長の繰り越しを計算する UDF があります。たとえば、その年の第 2 四半期で、第 3 四半期と第 4 四半期の成長がゼロの場合の年間成長率です。この場合、前年の第 4 四半期の成長と、今年の最初の 2 四半期が必要になります。ここに画像の説明を入力してください

これは計算やプログラムがそれほど難しくありません。簡単にアクセスできるようにするために、この関数の対象となる人々は、最後の観測点のみが関数の入力となるようにすることを主に支持しています。他の入力は、私が持っている観測データの四半期数です。この場合、CarryOver(C16,2)

この方法では、過去の別の値が変更されても、UDF は更新されません。 を使用して強制することはできますApplication.Volatileが、まず、使用される値が別のシートを参照する数式に基づいている場合は機能しないようです。そして、より根本的には、2 つの入力 (最後のデータのセル、四半期の数、つまりこの場合は : C11:C16) で使用されるセルを事前に計算できるため、暗黙のセルの値の 1 つが変更されるたびにこの UDF を計算するように Excel に指示する方法があるかもしれません。これは、オプションよりも優れています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

関連情報