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

36 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

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

    Epsilon desde Peru

    ResponderBorrar
  3. aguante union de santa fe

    ResponderBorrar
  4. Buena información, la más completa q he encontrado

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

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

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

    ResponderBorrar
  8. lo hago y no me funciona me dice que es un error de formula

    ResponderBorrar
  9. Muchas gracias muy bueno!!!!

    ResponderBorrar
  10. para una tarea muchas gracias !!!

    ResponderBorrar
  11. Gracias, Valiosa y completa información. Felicitaciones!

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

    ResponderBorrar
  13. 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!

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

    ResponderBorrar
  15. 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

    ResponderBorrar
  16. Excelente muchas gracias
    Me ah ayudado mucho

    ResponderBorrar
  17. Muchas gracias, me sirvió mucho tu información.

    ResponderBorrar
  18. 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.

    ResponderBorrar
  19. nO FUNCIONA EN EXCEL 2007!

    ResponderBorrar
  20. Muchas gracias por el aporte...probado y funcionando en Excel 2007

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

    ResponderBorrar
  22. 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.

    ResponderBorrar
  23. Excelente!!! gracias por la contribución. Saludos desde Guatemala!!!

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

    ResponderBorrar
  25. 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!!

    ResponderBorrar
  26. no viene muy bien explicado

    ResponderBorrar
  27. Hola que tal!! tengo una tarea como dato calcular la fecha de nacimiento? solo se muestra la edad.

    Gracias por su ayuda

    ResponderBorrar

Sin Captcha. Sin verificación de imagenes.

Quiénes leen regularmente este blog

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