interp


加重平均?


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