更新 UDF,其中我事先知道可能會更改結果的單元格,但它們不是直接參數

更新 UDF,其中我事先知道可能會更改結果的單元格,但它們不是直接參數

我有一個 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

相關內容