加重平均?
Function interp(dd As Double, days As Range, rates As Range) As Double
Dim i As Integer Dim x1 As Double Dim x2 As Double Dim y1 As Double Dim y2 As Double If dd <= days.Cells(1, 1).Value Then interp = rates.Cells(1, 1).Value Exit Function End If If dd >= days.Cells(days.Rows.Count, 1).Value Then interp = rates.Cells(days.Rows.Count, 1).Value Exit Function End If For i = 2 To days.Rows.Count If dd < days.Cells(i + 1, 1).Value Then x1 = days.Cells(i, 1).Value x2 = days.Cells(i + 1, 1).Value y1 = rates.Cells(i, 1).Value y2 = rates.Cells(i + 1, 1).Value interp = (y1 * (x2 - dd) + y2 * (dd - x1)) / (x2 - x1) Exit Function End If Next i interp = rates.Cells(days.Rows.Count, 1).Value
End Function