Ich habe eine UDF, die den Wachstumsübertrag über ein Jahr berechnet. Das ist zum Beispiel die jährliche Wachstumsrate im zweiten Quartal eines Jahres, wenn das Wachstum im dritten und vierten Quartal null ist. In diesem Fall bräuchte ich das Wachstum der vierten Quartale des Vorjahres und der ersten beiden Quartale des laufenden Jahres.
Dies ist nicht sehr schwer zu berechnen oder zu programmieren. Um leicht zugänglich zu sein, haben die Leute, für die es bestimmt ist, weitgehend bevorzugt, dass nur der letzte beobachtete Punkt ein Input der Funktion sein sollte. Ein anderer Input ist die Anzahl der Quartale der beobachteten Daten, die ich habe. In diesem Fall wäre esCarryOver(C16,2)
Wenn sich bei dieser Vorgehensweise ein anderer vergangener Wert ändert, wird meine UDF nicht aktualisiert. Ich kann das erzwingen, indem ich verwende, Application.Volatile
aber zunächst scheint es nicht zu funktionieren, wenn der verwendete Wert auf einer Formel basiert, die auf ein anderes Blatt verweist. Und grundsätzlicher kann ich im Voraus berechnen, welche Zellen mit den beiden Eingaben verwendet werden (Zelle der letzten Daten, Anzahl der Quartale, die ich habe, also in diesem Fall : C11:C16
), also könnte es eine Möglichkeit geben, Excel anzuweisen, diese UDF jedes Mal zu berechnen, wenn sich einer der Werte in den implizierten Zellen ändert, was besser wäre als die volatile
Option. Ist das machbar?
EDIT: Der Kern meiner UDF wäre:
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