我正在尝试生成一个简单的Excel VBA函数来计算不同类型的插值。我遇到的一个难点是,我似乎无法在函数中重新分配Y范围的值。
当我的VBA功能到达以下行时,它似乎无法根据以下公式更改/重新计算YRange
值:
YRange(rowCount) = -Log(YRange(rowCount)) / XRange(rowCount)
任何人都可以提供建议/帮助吗?
Public Function Kian_CurveInterp(XRange As Range, YRange As Range, XFrac As Double, InterpMode As Integer)
Select Case InterpMode
Case 1 'step-straight
Kian_CurveInterp = Linterp2(XRange, YRange, XFrac)
Case 2 'zero-rate interp
Dim rowCount As Integer
For rowCount = 1 To XRange.Count
YRange(rowCount) = -Log(YRange(rowCount)) / XRange(rowCount) 'convert discountFactors to zero-rates
Next rowCount
Kian_CurveInterp = Linterp2(XRange, YRange, XFrac)
Kian_CurveInterp = Exp(-Kian_CurveInterp * XFrac)
End Select
End Function