Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 可以不使用循环进行插值吗_Excel_Vba_Interpolation_Linear Interpolation_Cubic Spline - Fatal编程技术网

Excel 可以不使用循环进行插值吗

Excel 可以不使用循环进行插值吗,excel,vba,interpolation,linear-interpolation,cubic-spline,Excel,Vba,Interpolation,Linear Interpolation,Cubic Spline,我想知道是否可以在不使用循环的情况下插入,以获得处理时间 注意:插值目标是计算曲线上不存在的点。例如,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("

我想知道是否可以在不使用循环的情况下插入,以获得处理时间


注意:插值目标是计算曲线上不存在的点。例如,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
函数DCF(周期为双精度)为双精度
作为整数的Dim x
对于x=1到21
Date1=此工作簿。工作表(“Courbes”)。范围(“PeriodieCurbe”)。偏移量(x)。值
Date2=此工作簿。工作表(“Courbes”)。范围(“PeriodieCurbe”)。偏移量(x+1)。值
TauxMid1=此工作簿。工作表(“Courbes”)。范围(“Mid”)。偏移量(x)。值
tauxMid2=ThisWorkbook.Worksheets(“Courbes”).Range(“Mid”).Offset(x+1).Value
如果Periode>=Date1,Periode
我使用样条三次插值,但这是一个简单的线性插值示例 插值将帮助我构建自己的函数


是的,您可以使用近似匹配/VLOOKUP在不使用循环的情况下更有效地执行此操作

请参阅我的文章,了解这两种方法的代码和比较


看看这个很好的例子。@pizzettix但在你的例子中,他仍然使用循环,我想知道没有循环的另一种方式是否存在简单线性。你可以使用工作表公式斜率和截距来创建一个线性公式,它可以满足你的需要。@Dorian:看看这个。也许你可以将解表示为矩阵乘法(取决于三次插值类型)?在excel和vba中,您也可以使用矩阵进行计算。