Eu tenho uma UDF que calcula a transferência de crescimento ao longo de um ano. Isto é, por exemplo, no segundo trimestre do ano, a taxa de crescimento anual se o crescimento no terceiro e quarto trimestres for nulo. Nesse caso, eu precisaria do crescimento ou dos quatro trimestres do ano anterior e dos dois primeiros trimestres do ano corrente.
Isso não é muito difícil de calcular ou programar. Para ser facilmente acessível, as pessoas a quem se destina têm favorecido em grande parte que apenas o último ponto observado seja uma entrada da função. Outra entrada é o número de trimestres de dados observados que possuo. Neste caso seriaCarryOver(C16,2)
Dessa forma, se outro valor passado mudar, ele não atualiza minha UDF. Posso forçar isso usando, Application.Volatile
mas primeiro parece não funcionar se o valor usado for baseado em uma fórmula que se refere a outra planilha. E mais fundamentalmente, posso calcular antecipadamente quais células serão usadas com as duas entradas (célula dos últimos dados, número de trimestres que tenho, então neste caso :) C11:C16
então pode haver uma maneira de dizer ao Excel para calcular esta UDF cada vez que um dos valores nas células implícitas muda, o que seria melhor que a volatile
opção. Isso é factível?
EDIT: o núcleo da minha UDF seria:
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