Está en la página 1de 2

' Definicion de la funcion y sus entradas

Function INTERPOLAR(valor As Double, vec_ref As Range, vec_resultado As Range) As Double '

' Definicion de variables

Dim y0, x0, y1, x1, m, x As Double

Dim i, nElementos As Long

nElementos = vec_ref.Count ' Especifica el numero de elementos del rango seleccionado

x = valor ' Dato de entrada

' Interpolacion lineal

If vec_ref(vec_ref.Count) > vec_ref(1) Then

For i = 1 To nElementos - 1

' Condicional para encontrar el intervalo en el que se encuentra el valor a evaluar (Rango con
datos ascendentes)

If valor >= vec_ref(i) And valor < vec_ref(i + 1) Then

y1 = vec_resultado(i + 1)

y0 = vec_resultado(i)

x1 = vec_ref(i + 1)

x0 = vec_ref(i)

m = (y1 - y0) / (x1 - x0) ' Calculo de pendiente de la ecuacion lineal

INTERPOLAR = y0 + m * (x - x0) 'Calculo del valor interpolado

End If

Next i

Else

For i = 1 To nElementos - 1

' Condicional para encontrar el intervalo en el que se encuentra el valor a evaluar (Rango con
datos descendentes)

If valor >= vec_ref(i + 1) And valor < vec_ref(i) Then

y1 = vec_resultado(i)

y0 = vec_resultado(i + 1)

x1 = vec_ref(i)

x0 = vec_ref(i + 1)
m = (y1 - y0) / (x1 - x0) ' Calculo de pendiente de la ecuacion lineal

INTERPOLAR = y0 + m * (x - x0) 'Calculo del valor interpolado

End If

Next i

End If

End Function

También podría gustarte