Trend() should handle large data. The way you can use it in VBA depends on how your arrays are setup. Here is one way.
Sub Test_eInterp()
'=einterp($B$2:$B$10,$A$2:$A$10,A2)
MsgBox eInterp([B2:B10], [A2:A10], 5)(1)
End Sub
Function eInterp(Known_ys As Variant, Known_xs As Variant, _
Optional New_xs As Variant = 0) As Variant
Dim d As Variant, y() As Variant, x() As Variant
y() = WorksheetFunction.Transpose(Known_ys)
x() = WorksheetFunction.Transpose(Known_xs)
'New_xs = Array(New_xs)
'd = WorksheetFunction.Trend(y(), x(), New_xs)
d = WorksheetFunction.Trend(Known_ys, Known_xs, Array(New_xs))
If d(1) >= Known_ys(1) And d(1) <= Known_ys(2) Then eInterp = d
eInterp = d
End Function