=TODAY
date A date B date C
Necesito una fórmula que me calcule la fecha B.
Es decir, si entre la fecha A y = HOY ha pasado más de un año y si la fecha C está vacía, entonces la fecha B será la misma que = HOY; de lo contrario, la fecha será la misma que la fecha A más uno. año.
Me las arreglé para crear una fórmula como esta:
=IF(AND(DATEDIF(date A,$date $B,"Y") >= 1, ISBLANK(date C)), TODAY(), DATE(YEAR(date A)+1,MONTH(date A),DAY(date A)))
pero esto no parece funcionar cuando la diferencia entre la fecha A y HOY es más de un año.
Respuesta1
Nota: Estoy en el Reino Unido, por lo que mi respuesta utiliza fechas en el formato dd/mm/aaaa.
Digamos:
date a
está en la celda A1
date b
está en la celda B1
y
date c
está en la celdaC1
Entonces digamos que pones 31/02/2015
en la celda A1
y pones =IF(AND(DATEDIF(A1,TODAY(),"Y")>=1,ISBLANK(C1)),TODAY(),DATE(YEAR(A1)+1,MONTH(A1),DAY(A1)))
en la celda, A2
la fórmula funciona para mí.
Como dijo @Máté Juhász en los comentarios, el problema surge cuando tienes algo en el celular C1
. Si ese es el caso, se agregará 1 año a la fecha en A1, lo que la convertirá en 31/02/2016 en lugar de la fecha actual de 09/02/2016.
La celda C1
puede aparecer en blanco si le pones un espacio, pero Excel verá el espacio como datos. Entonces, por seguridad, si desea verificar que una celda sea humanamente visible como en blanco al incluir un espacio en blanco, debe cambiar la prueba lógica para =OR(ISBLANK(C1),C1=" ")
hacer que la fórmula final en la celda B1
sea como=IF(AND(DATEDIF(A1,TODAY(),"Y")>=1,OR(ISBLANK(C1),C1=" ")),TODAY(),DATE(YEAR(A1)+1,MONTH(A1),DAY(A1)))
Una alternativa a =OR(ISBLANK(C1),C1=" ")
, que no tiene ninguna diferencia funcional excepto reducir la longitud de la fórmula en 6 caracteres, es usar la alternativa sugerida en el comentario, que sería =OR(C1="",C1=" ")
hacer una fórmula final alternativa en la celda B1
como=IF(AND(DATEDIF(A1,TODAY(),"Y")>=1,OR(C1="",C1=" ")),TODAY(),DATE(YEAR(A1)+1,MONTH(A1),DAY(A1)))