【发布时间】:2021-01-27 17:41:13
【问题描述】:
我想知道是否可以不使用循环进行插值以获得处理时间。
注意:插值目标是计算曲线上不存在的点。例如 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
我使用的是样条三次插值,但是一个简单的线性示例 插值将帮助我构建自己的函数。
【问题讨论】:
-
@pizzettix 但在你的例子中他仍然使用循环,我想知道是否存在其他没有循环的方式
-
简单线性,您可以使用工作表公式 SLOPE 和 INTERCEPT 创建一个线性公式来满足您的需求。
-
@Dorian:看看这个stackoverflow.com/questions/41920162/…。也许您可以将解决方案表示为矩阵乘法(取决于三次插值类型)?在 excel 和 vba 中,您也可以使用矩阵进行计算。
标签: excel vba interpolation linear-interpolation cubic-spline