No obtengo el resultado correcto de una función definida en excel 2003

Sres. T.E.

No logro obtener el resultado deseado del siguiente código:

Tengo en una hoja Excel 2003 celda E6 la fecha “01/10/2010”, la cual se obtiene de la formula “=BUSCARV(E4;Trabajadores;3;FALSO)” y en la celda N4 “25/01/2018” la cual es transcrita manualmente, ambas celdas están Formateadas como Fechas .

Datos anteriores son tratados con la siguiente función definidas por el Usuario :

‘La idea de la Función es que retorne los Años Transcurridos entre las dos Fechas.

Dim Años As Variant

' retorna los años

Function AñosAntg(FechaIni, FechaEnd As Variant) As Integer

    ' comprueba si el valor no es nulo

    If IsNull(FechaIni) Then

        AñosAntg = 0

        Exit Function

    End If

    Años = DateDiff("yyyy", FechaIni, FechaEnd)

    If Date < DateSerial(Year(FechaEnd), Month(FechaIni), Day(FechaIni)) Then

        Años = Años - 1

    End If

'    AñosAntg = CInt(Años)

End Function

Por ultimo coloco la función en la celda “O5”, y el resultado es que muestra en dicha celda el valor correcto esta muestra lo hace de forma relámpago y luego pega el valor “#¡VALOR!” Sustituyendo el resultado correcto.

2 Respuestas

Respuesta

Me quedaron algunas dudas ¿será posible que muestres al menos parte de tus datos (con el ¿error? Y lo que deseas se obtenga) ¿Cómo para entender mejor? Quizá dejando el archivo en "OneDrive" o similar.

Abraham Valencia

PD: Quizá solo sea cuestión del formato de la(s) fecha(s)

Respuesta

Ender Vargas,

Si solo deseas obtener el número de años entre dos fechas, puedes usar la función SIFECHA(), creo que esta disponible en la versión 2003 pero esa función no se muestra en el catálago de funciones, por ello tienes que digitarlo. En tu caso debes de armar la función de la siguiente manera:

=SIFECHA(E6;N4;"Y") ------> "Y" por el número de años.

En mi caso el separador de parámetros es ";"

Espero que te sirva de ayuda. Cualquier consulta estaré pendiente.

¡Gracias! Por su colaboración.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.ScreenUpdating = False
Call ObtNumIndex

If Not Intersect(ActiveCell, Range("E2")) Is Nothing Or [E2] = Empty Then
Call ObtNumIndex    
ActiveSheet.Name = Worksheets("MtroTrab").Cells(SIndex, 2)

End If

Application.EnableEvents = False 'Desabilitado 
[E2] = ActiveSheet.Name  'En esta instrucción ocurría el problema 
Application.EnableEvents = True 'Habilitado ' El mismo fue corregido con

la Application.EnableEvents

End Sub

Saludos

Que bueno que te haya servido de ayuda, ojala que puedas continuar con tu proyecto.

Por favor, no olvidar de valorar las respuestas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas