是否可以在没有循环的情况下进行插值
Is it possible to Interpolate without loop
我想知道是否可以在不使用循环的情况下插入以节省处理时间。
注意:插值的目的是计算出我的曲线上不存在的点。例如 2021 年 10 月 9 日的汇率
曲线示例
实际上我正在使用 For 循环来浏览我的曲线来计算点。是否存在最聪明的方法?
Function DCF(Periode As Double) As Double
Dim x As Integer
For x = 1 To 21
Date1 = ThisWorkbook.Worksheets("Courbes").Range("PeriodeCourbe").Offset(x).Value
Date2 = ThisWorkbook.Worksheets("Courbes").Range("PeriodeCourbe").Offset(x + 1).Value
TauxMid1 = ThisWorkbook.Worksheets("Courbes").Range("Mid").Offset(x).Value
tauxMid2 = ThisWorkbook.Worksheets("Courbes").Range("Mid").Offset(x + 1).Value
If Periode >= Date1 And Periode < Date2 Then DCF = 1 / (Date2 - Date1) * ((Periode - Date1) * tauxMid2 + (Date2 - Periode) * TauxMid1)
Next
End Function
I am using spline cubic interpolation but a simple example with linear
interpolation will help me to build my own function.
是的,你可以使用近似 MATCH/VLOOKUP.
更有效地完成它而无需循环
请在此处查看我的 post 代码和两种方法的比较。
https://fastexcel.wordpress.com/2011/06/06/writing-efficient-vba-udfs-part-2/
我想知道是否可以在不使用循环的情况下插入以节省处理时间。
注意:插值的目的是计算出我的曲线上不存在的点。例如 2021 年 10 月 9 日的汇率
曲线示例
实际上我正在使用 For 循环来浏览我的曲线来计算点。是否存在最聪明的方法?
Function DCF(Periode As Double) As Double
Dim x As Integer
For x = 1 To 21
Date1 = ThisWorkbook.Worksheets("Courbes").Range("PeriodeCourbe").Offset(x).Value
Date2 = ThisWorkbook.Worksheets("Courbes").Range("PeriodeCourbe").Offset(x + 1).Value
TauxMid1 = ThisWorkbook.Worksheets("Courbes").Range("Mid").Offset(x).Value
tauxMid2 = ThisWorkbook.Worksheets("Courbes").Range("Mid").Offset(x + 1).Value
If Periode >= Date1 And Periode < Date2 Then DCF = 1 / (Date2 - Date1) * ((Periode - Date1) * tauxMid2 + (Date2 - Periode) * TauxMid1)
Next
End Function
I am using spline cubic interpolation but a simple example with linear interpolation will help me to build my own function.
是的,你可以使用近似 MATCH/VLOOKUP.
更有效地完成它而无需循环请在此处查看我的 post 代码和两种方法的比较。
https://fastexcel.wordpress.com/2011/06/06/writing-efficient-vba-udfs-part-2/