결과를 변경할 수 있지만 직접적인 매개변수는 아닌 셀을 미리 알고 있는 UDF를 업데이트합니다.

결과를 변경할 수 있지만 직접적인 매개변수는 아닌 셀을 미리 알고 있는 UDF를 업데이트합니다.

1년 동안의 성장 이월을 계산하는 UDF가 있습니다. 예를 들어, 2분기에는 3분기와 4분기의 성장이 0인 경우 연간 성장률이 됩니다. 이 경우 전년도의 4분기와 올해 1분기의 2분기가 필요합니다.여기에 이미지 설명을 입력하세요

이것은 계산하거나 프로그래밍하는 것이 그리 어렵지 않습니다. 쉽게 접근할 수 있도록 이 기능을 사용하는 사람들은 마지막으로 관찰된 지점만 기능의 입력이 되어야 한다는 점을 대체로 선호했습니다. 다른 입력은 내가 가지고 있는 관찰 데이터의 분기 수입니다. 이 경우에는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

관련 정보