Hacer la diferencia entre dos fechas es una operación compleja pero se simplifica con la función DADOSI en Excel. El único problema es que esta función es una función oculta 🤔😯
Problema que plantea la diferencia entre 2 fechas
Tomemos el siguiente ejemplo donde tenemos 9 días de diferencia entre las 2 fechas. Sin embargo, tras una inspección más cercana, Las 2 fechas están en 2 meses diferentes.

En otras palabras, si queremos saber la diferencia en número de meses, podríamos escribir la siguiente fórmula con la función MES.
=MES(B1)-MES(B2)

Desafortunadamente para nosotros, esta fórmula devuelve el valor 1 (ver la imagen de arriba) Sin embargo, no hay una diferencia de un mes entre las fechas..
Por tanto, el resultado es falso con este método.
La función FECHA.SI
Para diferenciar entre dos fechas, Excel tiene una función increíble, esta es la función SIFECHA. Sin embargo, esta función está oculta.. 😯

Para comprobarlo, simplemente consulta la ayuda en línea de esta función o búscala en el menú Insertar función. No la encontrarás por ningún lado, y aun así funciona a la perfección (¡qué raro es tenerla en Microsoft! 🤔).
Parámetros de la función DATEDIF
La función FECHA.SI Necesita 3 parámetros para funcionar.
- una primera cita :Indica el valor de la fecha más antigua.
- una segunda cita :Este valor es necesariamente mayor que la primera fecha.
- El parámetro de cálculo :Puedes indicar si deseas contar el número de años, meses o días.
=FECHASI(fecha1;fecha2;parámetro)
Los primeros 2 parámetros de la función se explican por sí mismos. Sin embargo, El tercer parámetro es, con diferencia, el más importante. porque es él quien determinará el tipo de cálculo de diferencia que se realizará.
Explicación de los valores del tercer parámetro.
Los 3 parámetros esperados pueden ser
- "re" (día) calcula la diferencia en el número de días entre las 2 fechas
- "metro" (mes) calcula la diferencia en número de meses
- "y" (año) calcula la brecha en número de años

Observación :la diferencia en el número de meses es muy interesante para el vencimiento de un contrato de seguro por ejemplo; 24 meses, 36 meses,...
Configuración avanzada
También es posible escribir el tercer parámetro a partir de 3 después de cada período. Estos son los parámetros que se deben utilizar para el cálculo de antigüedad, por ejemplo.
- “ym” Devolverá el número de meses transcurridos desde el inicio de un período. El valor puede estar entre 0 y 11, ya que el mes 12 cambia de año.
- "Maryland" devolverá un valor entre 0 y 30. Finalmente, obviamente depende del número de días del mes, pero la función sabe con precisión el número de días de cada mes.
- "yarda"Es mucho menos útil, pero este código devuelve el número de días desde el inicio del período. El valor posible es entre 0 y 364.

Caso práctico: cálculo de la antigüedad
En la columna B, tenemos las fechas de contratación de nuestros empleados. La segunda fecha es la fecha del día actual devuelta por el fonction HOY. Por lo tanto tenemos las siguientes fórmulas
- Por los años solitarios
=DATEDIF($B5,$D$1,"y") - por los meses dentro de un año
=DATEDIF($B5,$D$1,"ym") - Para días dentro de un mes
=DATEDIF($B5,$D$1,"md")

09/09/2024 a las 23:43
Hola,
Llevo unas horas intentando transponer esta fórmula:
=FECHASI(D13;E13;"y")&" años "&FECHADI(D13;E13;"ym")&" meses "&FECHADI(D13;E13;"md")&" días "
En una macro en Excel365 donde D13 sería la fecha de nacimiento y E13 la fecha de fallecimiento.
Nunca lo logré 🙁
DatedIFF en VBA no reacciona de la misma manera en absoluto. Ahora bien, tampoco soy un experto.
Si un alma buena puede ponerme en el camino... se lo agradezco de antemano 🙂
16/04/2024 a las 16:25
hola,
la función parece genial pero no funciona o no sé cómo hacerla funcionar.
esto es lo que hago
celda C3: =HOY() da 16/04/2024
celda H28: =FECHA(1986;3;3) da 03/03/1986
celda I28: =DATEDIF(H28;C3;"Y") da 07/02/1900
conclusión: DATEDIF no funciona en mi caso. Yo no sé por qué...
16/04/2024 a las 19:22
Funciona pero tu celular I28 está en formato Fecha. Se debe dejar a formato general
10/02/2024 a las 11:11
hola a ti, hay alguna manera de hacer que DATEDIF funcione para obtener una duración en días y horas; ej.: 10 de febrero de 2024 11 a. m. para una salida el 2 de enero 13 p. m. resultado 38 días 22 p. m.? Os agradezco
10/02/2024 a las 14:49
Hola, este artículo te dará la respuesta. Todo depende de si incluyes o no la fecha con la hora en la misma celda.
19/10/2023 a las 10:20
Gracias por su presentación. Mis mejores deseos.
11/09/2021 a las 23:30
¡Hola
Necesito un formulario que compare entre 3 fechas: fecha de inicio; fecha de finalización y mes
El objetivo es que un cliente ex: fecha de entrada 03/2021 fecha de finalización 08/2021 y durante este período pague 250dh/mes
fecha de inicio fecha de finalización 01/2021 02/2021 03/2021 04/2021 05/2021 06/2021 07/2021 08/2021 09/2021 10/2021 11/2021
03/2021 08/2021 0 0 250 250 250 250 250 250 0 0 0
12/06/2018 a las 16:22
Hola,
Estoy buscando automatizar la función dateif. En una tabla de Excel ingresé fechas de referencia (fecha de contratación, fecha de referencia y fecha de nacimiento) para calcular la edad y antigüedad del empleado. ¿Puedo seleccionar estas fechas en mi hoja de cálculo para ingresarlas en la fórmula (en lugar de escribirlas a mano)? ¡Usaré esto para que cada año pueda cambiar las fechas de referencia y el cálculo de edad y antigüedad se haga automáticamente!
¿Es posible hacer lo que quiero?
cordialement,
22/05/2018 a las 22:24
¿No sé por qué mi texto no se muestra correctamente?
Devuelvo el texto que está mal escrito en mi solicitud...
Lo siento, nuevamente...
Este será mi último intento.
========================
cuando K17 sea posterior a $C$1 (siendo la fecha de hoy).
Agregué la siguiente fórmula al final de la fórmula anterior:
&IF(AND(K171;" años, ";" año, ")&DATEDIF($C$1;K17;"YM") &" mes y "&DATEDIF($C$1;K17;"MD")&IF(DATEDIF($ C$1;K17;"MD")>1;"días";"día")&IF(AND(K17)
Pero no funciona.
¿Yo no sé por qué?
Especialmente cuando simplemente escribo la siguiente fórmula con una fecha K17 después de $C$1:
=SI(Y(K17
funciona.
Gracias de antemano a quien quiera ayudarme.
22/05/2018 a las 18:28
Estoy posponiendo este mensaje porque hubo un error en mi redacción...
=========
Hola,
Utilizo la etiqueta DATEDIF como se muestra a continuación:
=FECHASI($C$1;K17;"Y")&IF(FECHADI($C$1;K17;"Y")>1;" años, ";" año, ")&FECHAIF($C$1;K17;"YM ") &" mes y "&DATEDIF($C$1;K17;"MD")&IF(DATEDIF($C$1;K17;"MD")>1;" días";" día")
($C$1 siendo la fecha de hoy)
funciona.
Tengo el número de año, mes y día que quedan entre dos fechas.
Es lo que estoy buscando.
Pero hay un "pero" cuando la fecha en K17 es posterior a $C$1. Tengo un error (#¡NÚMERO!)
Mientras que cuando K17 es anterior funciona, me quedan la cantidad de años, meses y días.
Entonces esa es mi primera preocupación.
Y mi segunda preocupación, con esta misma fórmula de arriba, me gustaría tener un texto que aparezca como "obsoleto"
cuando K17 sea posterior a $C$1 (siendo la fecha de hoy).
Agregué la siguiente fórmula al final de la fórmula anterior:
&IF(AND(K171;" años, ";" año, ")&DATEDIF($C$1;K17;"YM") &" mes y "&DATEDIF($C$1;K17;"MD")&IF(DATEDIF($ C$1;K17;"MD")>1;"días";"día")&IF(AND(K17)
Pero no funciona.
¿Yo no sé por qué?
Especialmente cuando simplemente escribo la siguiente fórmula con una fecha K17 después de $C$1:
=SI(Y(K17
funciona.
Gracias de antemano a quien quiera ayudarme.
22/05/2018 a las 18:35
¿No sé por qué mi texto no se muestra correctamente?
Devuelvo el texto que está mal escrito en mi solicitud...
Lo siento...
=====================
cuando K17 sea posterior a $C$1 (siendo la fecha de hoy).
Agregué la siguiente fórmula al final de la fórmula anterior:
&IF(AND(K171;" años, ";" año, ")&DATEDIF($C$1;K17;"YM") &" mes y "&DATEDIF($C$1;K17;"MD")&IF(DATEDIF($ C$1;K17;"MD")>1;"días";"día")&IF(AND(K17)
Pero no funciona.
======================
22/05/2018 a las 18:51
Hola,
AND(K171;" ans, "; " an, ") no significa nada.
La función AND (como OR) espera recibir pruebas lógicas pero aquí no hay ninguna.
22/05/2018 a las 18:04
Hola,
Utilizo la etiqueta DATEDIF como se muestra a continuación:
=FECHASI($C$1;K17;"Y")&IF(FECHADI($C$1;K17;"Y")>1;" años, ";" año, ")&FECHAIF($C$1;K17;"YM ") &" mes y "&DATEDIF($C$1;K17;"MD")&IF(DATEDIF($C$1;K17;"MD")>1;" días";" día")
($C$1 siendo la fecha de hoy)
funciona.
Tengo el número de año, mes y día que quedan entre dos fechas.
Es lo que estoy buscando.
Pero hay un "pero" cuando la fecha en K17 es posterior a $C$1. Tengo un error (#¡NÚMERO!)
Mientras que cuando K17 es anterior funciona, me quedan la cantidad de años, meses y días.
Entonces esa es mi primera preocupación.
Y mi segunda preocupación, con esta misma fórmula de arriba, me gustaría tener un texto que aparezca como "obsoleto"
cuando K17 sea posterior a $C$1 (siendo la fecha de hoy).
Agregué la siguiente fórmula al final de la fórmula anterior:
&IF(AND(K171;" años, ";" año, ")&DATEDIF($C$1;K17;"YM") &" mes y "&DATEDIF($C$1;K17;"MD")&IF(DATEDIF($ C$1;K17;"MD")>1;"días";"día")&IF(AND(K17)
Pero no funciona.
¿Yo no sé por qué?
Especialmente cuando simplemente escribo la siguiente fórmula con una fecha K17 después de $C$1:
=SI(Y(K17
funciona.
Gracias de antemano a quien quiera ayudarme.
07/05/2018 a las 15:40
Hola,
por mi parte en una columna donde calculare el total de meses entre 2 fechas de una medición con If vacio y DATEDIF, no hay problema.
Por otro lado, en la siguiente columna me gustaría que se hiciera este cálculo para el AÑO ACTUAL. No consigo que tenga en cuenta que si la fecha de entrada es inferior a enero de 2017, cuenta desde enero de 2017. Probé esta fórmula:
Le puse esto: =Si(B2<01/01/2017;DATEDIF(01/01/2017;AE2;"m");DATEDIF(B2;AE2;"m")) pero igual calcula el número de meses completos
Entonces tendré que poner lo mismo en él (más en la misma fórmula) que dice que deja de contar el 31/12/17 incluso si la fecha de lanzamiento es en 2018...
ej: entrada el 01/10/2016 y salida el 01/02/18 = 16 meses pero 12 meses en 2017
¿Estoy claro? Es eso posible ?
Merci de votre aide
23/03/2018 a las 06:44
Hola,
Leí tus comentarios que para mí son un poco chinos.
Por eso quiero resaltar diferentes columnas que tienen diferentes fechas (mensuales):
Ex columna E: varias fechas diferentes del mes (día de envío, último plazo); columna F (fechas donde se envió el documento” o quiero poner 3 colores: mismo día = verde, día temprano = azul, día tardío = rojo.
Columna D: 45 días antes de las fechas de envío (columna E), amarilla; 30 días colores = naranja; 20 días = rojo; 10 días = negro.
Soy autodidacta y si algún alma bondadosa quisiera ayudarme.
Si tienes una dirección de correo electrónico puedo enviarte un ejemplo de una tabla.
Gracias
22/01/2018 a las 14:46
Hola,
Acabo de aplicar la fórmula DATEDIF para calcular la cantidad de meses entre dos fechas (fecha de inicio y fecha de finalización, pero los resultados no siempre son precisos).
Ejemplo:
Fecha de inicio Fecha de finalización Número de meses
Ejemplo 1 01/01/2016 31/12/16 11
Ejemplo 2 19/09/16 31/12/16 3
En el ejemplo 1 el resultado debería ser 12 ya que el año está completo y en el ejemplo 2 el resultado debería ser 3.5 meses.
¿No debería añadirse algo a la fórmula?
Gracias por su respuesta.
12/11/2018 a las 11:30
Para calcular la diferencia entre dos fechas en años meses días
Sugiero la siguiente fórmula para poner en C2. (Fecha DE estar en A2 y Fecha DE estar en B2)
=SI(A2DÍA(B2);
DATEDIF(A2;B2;"y")&" año(s), "&DATEDIF(A2;B2;"ym")&" mes, "&DATE(AÑO(A2);MES(A2)+1;0)- A2+DÍA(B2)&"día(s)"
;
DATEDIF(A2;B2;"y")&" año(s), "&DATEDIF(A2;B2;"ym")&" mes, "&DAY(B2)-DAY(A2)&" día(s)") )
;
SI(DÍA(B2)=1;
"-"&DATEDIF(B2;A2;"y")&" año(s), "&DATEDIF(B2;A2;"ym")&" mes, "&A2-DATE(AÑO(A2);MES(A2); 1 día)"
;
SI(DÍA(B2)>DÍA(A2);
"-"&DATEDIF(B2;A2;"y")&" año(s), "&DATEDIF(B2;A2;"ym")&" mes, "&DATE(AÑO(B2);MES(B2)+1; 0)-B2+DÍA(A2)&"día(s)"
;
"-"&DATEDIF(B2;A2;"y")&" año(s), "&DATEDIF(B2;A2;"ym")&" mes, "&DAY(A2)-DAY(B2)&" día(s) ) )"
)))
31/03/2017 a las 09:07
Hola,
¿No hay respuesta para TRAN? porque tengo el mismo problema. =FECHASI(C14;D14;"ym")&"mes"&FECHADI(C14;D14;"md")&"días"
Tengo un contrato que comienza el 06/02/17 y finaliza el 31/05/17. La respuesta es 3 meses y 23 días.
Excepto con la fórmula, me dan 3 meses y 25 días.
Lo mismo si pongo del 01/05/2017 al 31/05/2017 la respuesta será 0 meses y 30 días... Mientras que efectivamente hay 1 mes y 0 días!
Merci pour votre réponse.
25/12/2017 a las 16:38
Agregar un "+1" a la fecha de finalización debería funcionar.
=FECHASI(C14;D14+1;”ym”)&” meses “&FECHADI(C14;D14+1;”md”)&” días
Las fechas son solo una serie de números en Excel, por lo que, naturalmente, aparecerá una diferencia de 1 día (en el caso de que la fecha de finalización sea un día que debe contarse).
Con la fórmula corregida, obtendrá por lo tanto 1 mes para su ejemplo del 01/05/2017 al 31/05/2017.
Para su ejemplo del contrato que comienza el 06/02/2017 al 31/05/2017, creo que hay una discrepancia en la interpretación.
Parece contar en meses puros de 30 días, pero la fórmula cuenta de manera diferente.
Si lo desglosas todo:
06/02/2017 -> 05/03/2017: 1 mes
06/03/2017 -> 05/04/2017: 1 mes
06/04/2017 -> 05/05/2017: 1 mes
06/05/2017 -> 31/05/2017: 26 días
Son 3 meses y 26 días.
Buena suerte.
04/11/2015 a las 13:02
Hola, uso la siguiente fórmula =DTEDIF(F4;TODAY();"y") y funciona muy bien :o) Sin embargo, la uso en una tabla donde está la fecha en la columna de F4,G4, H4,I4 , etc... sólo se llena de día a día durante el mes y por lo tanto, en esta tabla, a principios de mes, muchas celdas están vacías. El resultado de mi fórmula es por tanto 115 porque la fecha de referencia cuando la celda vacía es 1900.... ¿Tienes alguna solución para que en mi tabla no aparezca 115 si no está completamente llena??? Gracias de antemano
04/11/2015 a las 13:04
pequeña corrección... efectivamente es LA columna de F4, F5, F6, etc... ;o)
09/11/2015 a las 10:31
Hola,
Simplemente incluya la función DATEDIF en una función SI que probará si la celda está completa o no.
=SI(F4<>"";FECHASI(...);"")
10/04/2015 a las 11:30
Utilicé la fórmula para la esperanza de vida de los reyes de Francia. No funciona para citas antiguas. Ejemplo para St Louis, del 25/04/1214 al 25/08/1270. Pero aún así llego al resultado sumando 1000 años a cada fecha, y por lo tanto del 25/04/2214 al 25/08/2270.
16/01/2015 a las 15:32
Hola, uso dateif para calcular el número de meses entre dos fechas. Funciona muy bien entre meses completos pero me gustaría que me dijera medios meses también. Por ejemplo, la diferencia entre el 01.01.2014 y el 15.04.2014 = 3.5 meses.
¿Conoces una fórmula que haga esto?
Merci.
13/01/2015 a las 14:50
Tengo un problema con dateif. cuando una de las celdas está vacía y no llena, el resultado de esta fórmula me da 42017, lo que realmente me plantea un problema.
17/01/2015 a las 21:35
Hola,
Simplemente haga una prueba con la función SI para saber si una de las celdas que se utilizará en la función DATEDIF está vacía o no.
=SI(O(celda1=vacía;celda2=vacía),"",FECHASI)
18/08/2015 a las 16:27
Hola,
Me gustaría aplicar la fórmula DATEDIF para tener alertas para realizar recordatorios, respecto al problema de la celda vacía utilicé tu indicación sin éxito. Así se ve mi tabla: en J fecha de contacto, en K fecha de recordatorio, en L fecha de hoy con la fórmula HOY(), en M la fecha de sobrepaso, en N la alerta con la fórmula SI=( M8 >0;"ALERTA";SI(ESTÁ VACÍO(M8);"NIL")). Que hacer, gracias de antemano.
15/12/2014 a las 19:20
Hola, la función dateif me da una fecha de salida!
Fecha de inicio Fecha de finalización Días Total
02-mayo 04-agosto 03-abr
04/09/2014 a las 12:30
Hola,
Utilicé esta fórmula pero noté un pequeño problema.
De hecho, lo uso para calcular la duración de los contratos de trabajo.
Ejemplo: Tengo un contrato que comienza el 10/09/14 y finaliza el 09/03/15. En principio, su periodo de trabajo es de 6 meses.
Excepto con la fórmula, me dan 5 meses y 28 días. ¿Supongo que fue febrero el que debió causar problemas al calcular en Excel?
Mi fórmula es: =FECHAIF(E17;F17;"y") & " año " & FECHAIF(E17;F17;"ym") & " mes y " & FECHAIF(E17;F17;"md") +1 & " días)"
Merci d'avance de fluidez réponse votre.
28/05/2014 a las 16:28
En Excel 2013, la función FECHA.SI no existe.
04/08/2014 a las 15:11
existe pero no está documentado: ¡inténtalo!
24/05/2014 a las 13:32
En A1 = 29/03/1970
En A2 = 16/05/2014
La fórmula es = FECHASI("A1";"A2";"Y")
Resultado: 44
06/05/2014 a las 16:56
Hola, no consigo la diferencia en meses. Sin embargo, tengo mi fecha "B" inferior a la fecha "C". Puse las comillas para "ym" y un "#NOMBRE?" aparece. la fórmula que puse se ve así:
= FECHASI(D47;E47;”ym”)
¿Sería posible ayudarme por favor?
06/05/2014 a las 17:32
¿En qué versión de Excel estás trabajando?
06/05/2014 a las 17:34
Excel 2013
06/05/2014 a las 18:49
Entonces debería funcionar perfectamente. En Excel 2003 habría entendido pkoi pero no allí. Y además, todas las funciones utilizadas en esta página web funcionan de maravilla.
Otra razón es que las fechas que tienes en tus celdas no están en formato de fecha. Intente cambiar el formato a Estándar para ver si tiene valores alrededor de 41000
e
06/05/2014 a las 18:54
Este es un documento que proviene de Excel 97-2003 y lo guardé en 2013.
Obtengo buenos valores alrededor de 41.
06/05/2014 a las 19:30
Entonces estas son fechas (buen punto)
Prueba a guardarlo en formato xlsx (aunque esto no debería tener ningún efecto) y empieza de nuevo.
06/05/2014 a las 19:34
No, no hay cambios, excepto cuando pongo dateif en minúsculas donde obtengo 0 en lugar de #NOMBRE.
30/03/2015 a las 06:21
Hola,
Estoy en Excel 2013 y lo mismo, no tengo la formula DATEDIF
Intento hacer todo lo que os explico pero no se puede hacer nada, solo hay #VALOR! que aparecen :/
06/05/2014 a las 19:00
Puse DATEDIF en minúsculas. ahora solo me salen 0s
02/01/2014 a las 20:52
bonsoir
Excel 2013 parece no conocer esta función.
¿Me sale el mensaje #NOMBRE en el celular?
fórmula utilizada
=FECHASI(F12;(HOY());Y)
Merci
Raymond
02/01/2014 a las 21:11
Tienes que poner Y entre comillas 😉
03/12/2013 a las 08:21
la fórmula [datedif] no funciona. ¿Tienes alguna explicación?
Merci
06/12/2013 a las 09:45
Hola,
La única razón que veo es que la fecha1 es mayor que la fecha2. Esta es la única razón conocida por la que DATEDIF no funciona
15/06/2013 a las 16:38
Gracias por compartir la información, es un software que aprecio especialmente.
Merci