Visual Basic para Aplicaciones - Validar Funcion

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Validar Funcion

Publicado por Cristian camilo (2 intervenciones) el 21/04/2023 03:19:12
Hola Amigos

Alguien me puede indicar que error tengo en esta función ya que cuando la ejecuto me sale el error #¿Nombre?

'Esta función interpola y extrapola
Function InterExtraP(xi#, X As Excel.Range, Y As Excel.Range)

'extrapolar hacia abajo
If X(1) > xi Then
i = 1
InterExtraP = Y(i) + (xi - X(i)) * (Y(i + 1) - Y(i)) / (X(i + 1) - X(i))
Exit Function
End If

'interpolar
i = Application.WorksheetFunction.Match(xi, X)

'extrapolar hacia arriba
If X.End(xlDown) < xi Then
i = i - 1
End If

InterExtraP = Y(i) + (xi - X(i)) * (Y(i + 1) - Y(i)) / (X(i + 1) - X(i))


End Function
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Validar Funcion

Publicado por Antoni Masana (500 intervenciones) el 21/04/2023 16:04:19
Para saber donde esta el fallo hace falta:

- Ver que valores le pasas
- Que valores hay en la hoja
- Saber que se supone que tiene que hacer la función.

Sube el libro.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Function InterExtraP(xi#, X As Excel.Range, Y As Excel.Range)
    ' --- extrapolar hacia abajo
    If X(1) > xi Then
        i = 1
        InterExtraP = Y(i) + (xi - X(i)) * (Y(i + 1) - Y(i)) / (X(i + 1) - X(i))
        '
        ' -- NOTA MIA -- Aqui i siempre tendrá un valor de 1 por lo que voy a simplificar
        '
        InterExtraP = Y(1) + (xi - X(1)) * (Y(2) - Y(1)) / (X(2) - X(1))
        '
        Exit Function
    End If
 
    ' --- interpolar
    i = Application.WorksheetFunction.Match(xi, X)
 
    ' --- extrapolar hacia arriba
    If X.End(xlDown) < xi Then
        i = i - 1
    End If
 
    InterExtraP = Y(i) + (xi - X(i)) * (Y(i + 1) - Y(i)) / (X(i + 1) - X(i))
End Function

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Validar Funcion

Publicado por Cristian (2 intervenciones) el 24/04/2023 16:22:23
Buen dia!
Antoni

En primer medida agradezco su tiempo y compartir su conocimiento

En respuesta:

La formula es una combinación de extrapolacion e interpolacion que permite determinar el movimiento que va a presentar una o unas tasas de intereses en el tiempo ( calculo netamente financiero)

El Error que estoy presentando es que cuando muevo el Xlsm a otra carpeta la formula se daña y me sale el eror #¿NOMBRE?, creo que se altera la formula ( Codigo) al cambiarlo de carpeta

Adjunto le dejo el arhivo que menejo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar