Atualizar uma UDF onde eu saiba antecipadamente as células que possivelmente irão alterar o resultado, mas que não são parâmetros diretos

Atualizar uma UDF onde eu saiba antecipadamente as células que possivelmente irão alterar o resultado, mas que não são parâmetros diretos

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.insira a descrição da imagem aqui

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.Volatilemas 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:C16entã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 volatileopçã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

informação relacionada