Vista la tabla de esta forma, podríamos restar
B2 (fecha actual) a la de cada cumpleaños. Pero ojo, hay un problema aquí:
los años. Realmente no me interesa en que año nació la persona,
solamente los días y meses, que serán los encargados de decirme en verdad cuantos días faltan para que cada pariente cumpla sus años. Vamos a crear una columna temporal en donde, con la función
FECHA(año, mes, día), cambiaremos el año de nacimiento por el año actual. Noten que utilizo como primer argumento de FECHA() el
AÑO() de
HOY(), para que siempre esté actualizado:
en la columna D introduje la función que se aprecia en al barra de fórmulas.
Entonces: todos cumplen años en el 2010.
Ahora sí podemos efectuar una resta común y corriente con B2 (fecha actual) para saber que cantidad de días restan para cada cumpleaños:
como verán.. los problemas siguen ¿que hago con los números negativos?
Es sencillo: si el resultado es menor a cero, me está indicando que el cumpleaños de esa persona ya pasó, o sea,
es anterior a la fecha actual. Entonces, y para resolverlo de una forma sencilla, agregaremos un condicional: si el valor de la columna diferencia es menor a la fecha actual,
le sumamos 365 (otro año):
observen la barra de fórmulas:
ahora si tenemos la diferencia real en días entre la fecha actual y el cumpleaños de cada persona.
No soy muy amigo de las columnas auxiliares, así que trato de evitarlas al máximo. ¿Y x que las muestro? fácil: para hacer el "paso a paso" mas comprensible. Pero, como no queda otra y las evito, les dejo a continuación como anidar las funciones y así omitir la columna "temporal":
=SI(FECHA(AÑO(HOY());MES(C7);DIA(C7))'<'B$2;(+FECHA(AÑO(HOY());MES(C7);DIA(C7))-B$2)+365;FECHA(AÑO(HOY());MES(C7);DIA(C7))-B$2)
no es tan complicado: si comparamos esta última función con la anterior, lo único que hice fué reemplazar el argumento D5 por la funcion FECHA(). Es mas largo, pero no mas difícil:
Podríamos hacer que en D2 aparezca el nombre del cumpleañero mas cercano, utilizando las funciones
MIN(), INDIRECTO() e
INDICE(), como muestro a continuación:
=INDICE(B5:D11;COINCIDIR(MIN(D5:D11);D5:D11;0);1)
con MIN() detecto el menor valor del rango D5:D11 y luego con COINCIDIR() e INDIRECTO() busco su posicion en la matriz.
Luego seleccionamos la columna de los nombres y aplicamos el siguiente formato condicional:
en D2 tenemos el nombre del cumpleañero mas cercano
Y obtenemos el siguiente resultado:
resaltamos su nombre.
Seleccionando la columna de la diferencia y aplicando este formato condicional:
mediante una función detectamos el menor valor de la columna
Resultando el siguiente cuadro final:
en D2 el nombre, y resaltados en la tabla el nombre y la cantidad de días que restan para su cumpleaños.
No olvidemos que en E2, por ejemplo, podríamos insertar la funcion BUSCARV() para dejar constancia al lado del nombre, la fecha, por si la tabla es muy extensa:
=BUSCARV(D2;B5:C11;2;FALSO)
ahora también tenemos la fecha junto al nombre
Bueno Alicia, espero te sirva mi ejemplo. Existen muchísimas formas de lograr este objetivo, creo haber expuesto una de las mas sencillas. Recordá que con una simple macro podrías ordenar de menor a mayor la tabla, tomando como columna guía la de "diferencia". Para que quede aún mejor, dicha macro podría ejecutarse cada vez que se abra el libro.
Por Dios... yo no sé si vale tanto Excel como el empeño que pusiste en esta página, brother. la verrdad que este blog está espectacular. ¡Suerte!
ResponderEliminarjaja, gracias
ResponderEliminarPERO QUE DIA CUMPLE AÑOS?
ResponderEliminarlos dias de cada cumpleaños están en la columna C. lo que realiza este ejercicio es avisar cual de todos esos cumpleaños es el mas cercano a la fecha actual, a modo de recordatorio.
ResponderEliminarsi necesitas alguna explicación extra avisame que lo solucionamos enseguida.
gracias x tu mensaje
a ver si me podes ayudar en algo q necesito…
ResponderEliminarTengo una hoja con columna nombre y columna Fecha de nacimiento
Tengo otra hoja con columna enero, febrero, marzo, abril, mayo, junio, julio ……etc hasta diciembre
Que necesito?
Que en ésta segunda hoja me aparezca debajo de cada mes el día y nombre de la persona q cumple años…
Debe ser dinámico porque se van agregando nombres a la hoja 1…
Y la hoja 2 se suele imprimir para una cartelera..
Me podras ayudar???
Muchaaaasss Gracias!
Matias
muy buena consulta, Matías. Te comento que a esto lo podemos solucionar de dos formas: con y sin macros. La primera de ellas incluye la utilización de varias funciones, y es la que estoy elaborando para mi ejemplo.
ResponderEliminarluego, si esto no te alcanza, hacemos uno con macros, que es mucho mas sencillo.
en poco te posteo el link con el ejemplo.
gracias x tu mensaje.
te paso el link a la entrada que levanté con tu consulta, sobre como acomodar automáticamente los nombres de las personas, en función a la fecha en la cual cumplen años.
ResponderEliminaral final... lo hice con macros. cualquier duda me avisas. un abrazo y gracias por tu mensaje.
http://damianexcel.blogspot.com/2011/03/acomodar-datos-segun-el-mes-de-una.html
como se haria si es que mas de una persona cumple años, como se haria para mostrar a todas las personas que cumplen años??
ResponderEliminarLima Peru: estimo que la solución vendría de la mano de las funciones matriciales. Dejame que vea bien la solución y levanto una entrada con tu consulta, que viene de primera para mi blog.
ResponderEliminarDesde ya que con macros seria muy sencillo, cosa que agregare en el futuro post sobre el tema.
Gracias x tu mensaje, en breve veras las novedades.
o quizás no algo tan complicado como insertar funciones matriciales o macros... si en la columna E ponés una simple funcion que verifique si la diferencia en días es 0... que ponga el nombre de la persona. Sería algo como esto:
ResponderEliminar=SI(D5=0;B5;"")
o sea: si la diferencia de días es 0 (cero), lo que me avisa del cumpleaños, coloca en D5 el nombre de la persona, caso contrario no coloca nada (""). Luego con los formatos condicionales, tal como lo detallo en la entrada, podrías resaltar la lista. ¿te sirve así o necesitas un reporte mas elaborado que te avise?
Interesante nota, porque te dice que te faltan 164 dias o parecido, pero si yo quiero convertir esos dias largos en meses y dias, como haria??? Quisiera que me diga, te faltan 3 meses y 5 dias para tu cumpleaños. Como haria?
ResponderEliminarSadavil: date una vuelta por esta entrada:
ResponderEliminarhttp://damianexcel.blogspot.com/2010/02/diferencia-entre-fechas-con-sifecha-que.html
habla sobre una función no documentada en Excel, ni siquiera en la ayuda: =SIFECHA().
te permite averiguar los intervalos entre fechas, especificando años, meses y días.
cualquier ayuda que necesites me avisas.
gracias x tus palabras.
hola que tal, mira tengo una base de datos con fecha de nacimiento, y quiero mostrar el nombre del que cumple años en ese dia actual, como le hago para que me aparesca el nombre de la persona que cumple años en el dia actual?
ResponderEliminardecime: ¿varias personas pueden cumplir años el mismo día o tenes a un solo cumpleañero por fecha? y: ¿donde necesitarías que se muestre esa fecha (un mensaje, en una celda, etc, etc)
ResponderEliminarcontestame esa dos cosas y empezamos.
Amigo, mis saludos!!!
ResponderEliminarRecurro a tu ayuda para ver si me puedes ayudar. Primero decirte que no conozco mucho de PCs, software, etc. así que soy demasiado novato.
Ya leí todos los post y la verdad que no entiendo que hacer para poder tener avisos que me digan que falta tantos meses y días para el cumpleaños de tal persona; que me digan(por ejemplo) en letra roja que falta 7, 6, 5, 4,3, 2, 1 días y otra que me diga: “Hoy cumpleaños fulano, sultano y mengano” , “cumple X años”.
Al igual que otras personas que ya comentaron también tengo una columna con nombre y otra con fecha de nacimiento, a las cuales se añadirían más personas, y que me salga estos avisos en otra hoja por meses.
Espero puedas ayudarme con un archivo Excel o plantilla Excel, disculpa mi ignorancia. GRACIAS!
Luis: no comprendo mucho tu consulta, ya que este post está dedicado casualmente a eso: indicar la cantidad de días restantes para la fecha de un cumpleaños. Si la diferencias es 0, entonces ese día es el esperado.
ResponderEliminarpor ejemplo:
=si(D5=0;"hoy es el cumpleaños";"")
¿que otra cosa deseas agregarle?
Muchas gracias por tu interés de ayudarme:
ResponderEliminar1. Que diga faltan tantos dias para su cumpleaños.
2. "hoy cumpleaños (nombre)".
3. que salgan en otra hoja por meses separados.
4. Que se puedan añadir más nombres con sus fechas de nacimiento y pasen automáticamente a la otra hoja que está por meses en donde anuncia los días faltantes o el cumpleaños.
5. Por favor haz una plantilla.
GRACIAS!!!
Con funciones se tornaría algo realmente pesado y complicado... dame tiempo para armar algo con macros y te aviso.
ResponderEliminarSinceramente, muy agradecido!!!
ResponderEliminarGracias a vos por avisar. Un abrazo.
ResponderEliminarMuy buen artículo, me devanaba los sesos con el tema de los años de nacimiento y el del día de hoy. Me fuiste de mucha ayuda, muchas gracias!
ResponderEliminar