En esta ocasión mostraré la implementación de una función para interpolar linealmente dentro de un conjunto de datos, como se hizo en un post anterior pero através de una función en este enlace puede revisar el post de referencia. También se verá la forma de usar FUNCUSTOMIZE.ZIP para que sea más elegante la función creada.

La Función INTERLIN

La función creada tiene el nombre INTERLIN, veamos el código de Excel VBA que hace posible la interpolación. Luego explicaré que hace cada línea de código.

[code language=”vb”]
Function INTERLIN(x As Range, rgX As Range, rgY As Range) As Double
Dim i As Integer
Dim iX As Range
Dim iY As Range
Select Case x.Value
Case Is < rgX(1).Value ‘Extrapola con los primeros 2 pares
Set iX = Range(rgX(1), rgX(2))
Set iY = Range(rgY(1), rgY(2))
Case Is > rgX(rgX.Count).Value ‘Extrapola con los ultimos 2 pares
Set iX = Range(rgX(rgX.Count – 1), rgX(rgX.Count))
Set iY = Range(rgY(rgY.Count – 1), rgY(rgY.Count))
Case Else ‘Interpola
i = 1
Do While x.Value > rgX(i).Value
i = i + 1
Loop
Set iX = Range(rgX(i – 1), rgX(i))
Set iY = Range(rgY(i – 1), rgY(i))
End Select
INTERLIN = Application.WorksheetFunction.Forecast(x.Value, iY, iX)
‘Libera Memoria
Set rgX = Nothing
Set rgY = Nothing
End Function
[/code]

Los datos de entrada de esta función son: x, rgX, rgY. En x se selecciona la celda donde se encuentra el valor que se quiere interpolar, rgX es el rango de los valores de X y rgY de los valores Y.

Se emplean tres variables i, iX, iY, el primero sirve como contador para el bucle Do. El segundo y tercero son los rangos (2 pares de datos) entre quienes se hará la interpolación.

La función se concibió de la siguiente manera: si el valor a buscar es menor que el primer valor o mayor que el último (se supone que los datos están ordenados de menor a mayor) se interpola o mejor dicho extrapola usando usando los dos primeros o dos últimos pares respectivamente. En caso contrario busca los pares entre quienes interpolar con el bucle Do While en la línea 14. Usando la setencia Select se determina los pares con los cuales interpolar.

Luego de obtenidos los pares entre quienes interpolar se calcula el valor estimado para x con la función PRONOSTICO (Forecast en Inglés, línea 20), se accede a ella usando Application.WorksheetFunction antes de la función. Finalmente se libera memoria.

Descarga el archivo aquí. Suerte.

Función para interpolar en excel

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *