23 de marzo de 2009

La función SIFECHA

La función SIFECHA es un caso aparte. No por su simpleza o complejidad. Simplemente, porque desde Excel 5.0 no está documentada. Es una función secreta, por decirlo de algún modo. En efecto, si buscamos la función en el listado de funciones de Excel, veremos que no aparece, aún si como categoría seleccionamos Todas. Tampoco aparece en la ayuda on-line de Excel. Supuestamente (y esto es solo un mito urbano) Microsoft mantiene oculta esta función porque planea desaparecerla, ya que es una función originaria de Lotus. Por si fuera poco, está mal traducida, ya que su nombre original, en inglés, es DATEDIF (date diference), no DATEIF.

SIFECHA devuelve la diferencia entre dos fechas, expresada en determinado intervalo. La sintaxis:

=SIFECHA(fecha_1, fecha_2, intervalo)

fecha_1 y fecha_2 deben ser fechas válidas, de otra forma, obtendremos un error #¡VALOR!. fecha_1 debe ser menor (más antigua) que fecha_2. Si no es así, se obtiene #¡NUM! El argumento intervalo especifica la unidad de medida en la que Excel devolverá el resultado. Puede ser uno de los siguientes valores:

"m" - meses. Número de meses completos entre fecha_1 y fecha_2.

"d" - días. Número de días entre fecha_1 y fecha_2.

"y" - años. Número de años completos entre fecha_1 y fecha_2.

"ym" - meses excluyendo años. Número de meses entre fecha_1 y fecha_2, suponiendo que fecha_1 y fecha_2 son del mismo año.

"yd" - días excluyendo años. Número de días entre fecha_2 y fecha_2, suponiendo que fecha_1 y fecha_2 son del mismo año.

"md" - días excluyendo meses y años. Número de días entre fecha_2 y fecha_2, suponiendo que fecha_1 y fecha_2 son del mismo mes y del mismo año.

Supongamos que queremos calcular la diferencia entre las fechas 01/03/2007 (uno de marzo de 2007) y la actual 24/03/2009. El resultado de SIFECHA variará según el intervalo especificado, como sigue:


Nótese que si el argumento intervalo es una referencia, no debe estar escrito entre comillas.

Para calcular la edad de una persona podemos usar una fórmula como la siguiente:

=SIFECHA(A1,HOY(), "y") & " años, " & SIFECHA(A1,HOY(),"ym") & " meses, " & SIFECHA(A1, HOY(), "md") & " días."

Suponiendo que la fecha de nacimiento del individuo estudiado está en A1.

Utilizando VBA, SIFECHA no puede ser llamada utilizando WorksheetFunction. Es preciso elaborar manualmente el código que haga los cálculos, por ejemplo:

Function Age(fecha1 As Date, fecha2 As Date) As String

Dim Y As Integer
Dim M As Integer
Dim D As Integer
Dim Temp1 As Date

Temp1 = DateSerial(Year(fecha2), Month(fecha1), Day(fecha1))
Y = Year(fecha2) - Year(fecha1) + (Temp1 > fecha2)
M = Month(fecha2) - Month(fecha1) - (12 * (Temp1 > fecha2))
D = Day(fecha2) - Day(fecha1)

If
D < 0 Then
M = M - 1
D = Day(DateSerial(Year(fecha2), Month(fecha2) + 1, 0)) + D + 1
End If

Age = Y & " años " & M & " meses " & D & " dias"


End Function

35 comentarios:

  1. muchisimas gracias me es exacto la informacion que necesitaba pase casi 3 dias buscando en toda la internet como usar esta funcion y con su ayuda lo logre al primer intento. muchas gracias.

    Eddy López Guatemala

    ResponderEliminar
  2. jejeje pregunte sto y o me dieron rpta, con esto cañon tio.. buena

    Epsilon desde Peru

    ResponderEliminar
  3. gracias, muy preciso

    ResponderEliminar
  4. aguante union de santa fe

    ResponderEliminar
  5. Buena información, la más completa q he encontrado

    ResponderEliminar
  6. yo creo q no es necesaria la función. Basta con restar las fechas de forma ordinaria con el menos.

    ResponderEliminar
  7. Muy bueno campen, es la mejor explicación que encontré. Dios te lo sabrá recompensar.

    ResponderEliminar
  8. Buenisimo, porque con la funcion resta salen los dias, pero no los meses ( que es dificil de calcular porque no todos tienen 30 dias )

    ResponderEliminar
  9. lo hago y no me funciona me dice que es un error de formula

    ResponderEliminar
  10. osea q onda con ustedes

    ResponderEliminar
  11. Muchas gracias muy bueno!!!!

    ResponderEliminar
  12. para una tarea muchas gracias !!!

    ResponderEliminar
  13. Gracias, Valiosa y completa información. Felicitaciones!

    ResponderEliminar
  14. Pues sí! Gran info!
    A continuar con la páginaque merece la pena el trabajo!

    ResponderEliminar
  15. Excelente!
    Increible que no esté documentada!.
    Como alternativa para calcular los meses entre dos fecha puede usarse:
    --
    redondear((fecha_final-fecha_inicial+1)/30.4)
    --
    donde 30.4 resulta de dividir 365/12
    --
    Saludos!

    ResponderEliminar
  16. Muchas gracias. Por fin una explicación clara de la función. Bien explicada y bien documentada

    ResponderEliminar
  17. Muchas gracias, una explicacion bastante buena y sencilla
    ------
    Yo usaba SIFECHA con buenos resultados pero veo que para el año 2012 cuenta los dias sin exclusion de meses. Con el codigo presentado para la FUNCTION AGE me quedo genial!!
    -----
    Muchas gracias

    ResponderEliminar
  18. Excelente muchas gracias
    Me ah ayudado mucho

    ResponderEliminar
  19. Muchas gracias, me sirvió mucho tu información.

    ResponderEliminar
  20. si todo muy bueno pero si yo tengo la fecha de hoy y un pibe tiene 35 años como calculo cuantos años trabajo en una agencia si no me da la primera fecha que trabajo.

    ResponderEliminar
  21. nO FUNCIONA EN EXCEL 2007!

    ResponderEliminar
  22. Muchas gracias por el aporte...probado y funcionando en Excel 2007

    ResponderEliminar
  23. Muy buena explicación

    ResponderEliminar
  24. LO MEJOR... DEMORÈ COMO CINCO DÌAS EN INTERNET Y NADA.. AHORA COPIO Y PEGA... SECO LOCO... ERES GENIAL... SE AGRADECE

    ResponderEliminar
  25. Yo no tarde tanto buscando en internet, solo busque la la función en la ayuda de Excel con la tecla F1 y el primer resultado fue el de tu foro… Gracias estimado…. Haz trascendido a las barreras de Microsoft.
    La información que proporcionaste es excelente y completa…. De nuevo gracias Men.

    ResponderEliminar
  26. Excelente!!! gracias por la contribución. Saludos desde Guatemala!!!

    ResponderEliminar
  27. perfecto el mini tutorial, esa ayuda de office en linea si no se entiende, sigue asi perfecto

    ResponderEliminar
  28. Excelente Gracias!! funcionó perfecto....Al principio no sabía donde colocar la funcion
    dentro de la hoja de calculo, la coloqué a un lado del reporte que necesitaba y listo!!

    ResponderEliminar
  29. no viene muy bien explicado

    ResponderEliminar

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Excel, Excel 2003, Excel 2007 y el logo XL son marcas registradas de Microsoft Corporation.