Calendario en Excel con una fórmula (¡Array ingresado, por supuesto!) - Consejos de Excel

Tabla de contenido

Cree un calendario en Excel con una fórmula utilizando la fórmula ingresada por matriz.

Mira esta figura:

Calendario en Excel - diciembre

Esa fórmula =Cooles la misma fórmula en todas las celdas de B5: H10. Mira:

Fórmula base del calendario

Se ingresó por matriz una vez que se seleccionó por primera vez B5: H10. En este artículo verás qué hay detrás de la fórmula.

Por cierto, hay una celda que aún no se muestra, cuál es el mes para mostrar. Es decir, la celda J1 contiene =TODAY()(y estoy escribiendo esto en diciembre) pero si lo cambia a 5/8/2012, verá:

Mes cambiado a mayo

Estamos en mayo de 2012. OK, definitivamente genial! Empiece desde el principio y avance hasta llegar a esta fórmula en el calendario y vea cómo funciona.

Además, suponga que hoy es 8 de mayo de 2012.

Primero, mire esta figura:

Fórmula de muestra

La fórmula realmente no tiene sentido. Lo haría, si estuviera rodeado =SUM, pero desea ver qué hay detrás de la fórmula, por lo que la expandirá seleccionándola y presionando la tecla F9.

Seleccionar fórmula

La figura de arriba se convierte en la figura de abajo cuando se presiona la tecla F9.

¿Qué hay detrás de la fórmula?

Observe que hay un punto y coma después del 3; esto indica una nueva fila. Las nuevas columnas están representadas por una coma. Así que vas a aprovechar eso.

El número de semanas en un mes varía, pero ningún calendario necesita más de seis filas para representar cualquier mes y, por supuesto, todos tienen siete días. Mira esta figura:

Rango de calendario

Ingrese manualmente los valores de 1 a 42 en B5: H10, y si ingresa =B5:H10en una celda y luego expande la barra de fórmulas, verá lo que se muestra aquí:

Expande la fórmula en la barra de fórmulas

Observe la ubicación de los puntos y comas, después de cada múltiplo de 7, que indica una nueva fila. Este es el comienzo de la fórmula, pero en lugar de una tan larga, puede usar esta fórmula más corta. Seleccione B5: H10. Tipo

=(0;1;2;3;4;5)*7+(1,2,3,4,5,6,7)

como la fórmula, pero no presione Entrar.

Para decirle a Excel que esta es una fórmula de matriz, debe mantener presionadas las teclas Ctrl + Shift con la mano izquierda. Mientras mantiene presionadas las teclas Ctrl + Shift, presione Entrar con la mano derecha. Luego, suelte Ctrl + Shift. En el resto de este artículo, este conjunto de pulsaciones de teclas se llamará Ctrl + Shift + Enter.

Si hizo Ctrl + Shift + Enter correctamente, aparecerán llaves alrededor de la fórmula en la barra de fórmulas y los números del 1 al 42 aparecerán en B5: H10 como se muestra aquí:

Tirantes rizados alrededor de la fórmula

Observe que está tomando los números del 0 al 5 separados por punto y coma (una nueva fila para cada uno) y multiplicándolos por 7, lo que efectivamente da esto:

Expandir más: índice de fila multiplicado por 7

La orientación vertical de estos valores sumada a la orientación horizontal de los valores del 1 al 7 produce los mismos valores que se muestran. La expansión de esto es idéntica a la que tenías antes. Suponga que ahora agrega HOY a estos números.

Nota: Editar una fórmula de matriz existente es muy complicado. Siga estos pasos con cuidado: Seleccione B5: H10. Haga clic en en la barra de fórmulas para editar la fórmula existente. Escriba + J1 pero no presione Entrar. Para aceptar la fórmula editada, presione Ctrl + Shift + Enter.

El resultado del 8 de mayo de 2012 es:

El resultado del 8 de mayo de 2012

Estos números son números de serie (el número de días desde el 1/1/1900). Si los formatea como fechas cortas:

Rango formateado

Claramente no está bien, pero lo logrará. ¿Qué sucede si los formatea simplemente como "d" para el día del mes?

Formatear como 'día' del mes

Casi parece un mes, pero ningún mes comienza con el nueve del mes. Ah, aquí hay un problema. Usó J1 que contiene 5/8/2012, y realmente necesita usar la fecha del primer día del mes. Así que supongamos que pones =DATE(YEAR(J1),MONTH(J1),1)J2:

Fecha del primero del mes

La celda J1 contiene 5/8/2012 y la celda J2 cambia eso al primero del mes de lo que se ingrese en J1. Entonces, si cambia J1 en la fórmula del calendario a J2:

Cambiar la fecha base como la primera fecha del mes

Más cerca, pero todavía no está bien. Se necesita un ajuste adicional, y es que debe restar el día de la semana del primer día. Es decir, la celda J3 contiene =WEEKDAY(J2). 3 representa el martes. Entonces, si resta J3 de esta fórmula, obtiene:

Turno por día de la semana

¡Y eso es lo correcto para mayo de 2012!

Está bien, estás muy cerca. Lo que todavía está mal es que los días 29 y 30 de abril aparecen en el calendario de mayo, y también aparecen del 1 al 9 de junio. Necesitas borrar estos.

Puede darle un nombre a la fórmula para facilitar la referencia. Llámalo "Cal" (todavía no es "genial"). Vea esta figura:

Crea una fórmula con nombre

Luego puede cambiar la fórmula para que simplemente sea =Cal(aún Ctrl + Shift + Enter):

Cambiar la fórmula de matriz con la fórmula nombrada

Ahora puede cambiar la fórmula para leer que si el resultado está en la fila 5 y el resultado es superior a 20, digamos, entonces ese resultado debe estar en blanco. La fila 5 contendrá la primera semana de cualquier mes, por lo que nunca debería ver ningún valor superior a 20 (o cualquier número superior a siete sería incorrecto; un número como 29 que ve en la celda B5 de la figura anterior es del mes anterior). Entonces puedes usar =IF(ROW()=5,IF(DAY(Cal)>20,"",Cal),Cal):

Fechas del mes anterior

Primero, observe que las celdas B5: D5 están en blanco. La fórmula ahora dice "si esta es la fila 5, entonces si el DÍA del resultado es mayor de 20, muestre en blanco".

Puede continuar eliminando los números bajos al final, los valores del próximo mes. A continuación se explica cómo hacerlo fácilmente.

Edite la fórmula y seleccione la referencia final a "Cal"

Fechas del próximo mes - 1

Comience a escribir IF (ROW ()> 8, IF (DAY (Cal) <15, "", Cal), Cal) para reemplazar la Cal final.

Fechas del próximo mes - 2

La fórmula final debe ser

=IF(ROW()=5,IF(DAY(Cal)>20,"",Cal),IF(ROW()>8,IF(DAY(Cal)<15,"",Cal),Cal))

Presione Ctrl + Shift + Enter. El resultado debería ser:

Resultado-1

Quedan dos cosas por hacer. Puede tomar esta fórmula y darle un nombre, "Genial":

Nombra la fórmula como 'Genial'

Luego usa eso en la fórmula que se muestra aquí:

Resultado-2

Por cierto, los nombres definidos se tratan como si estuvieran ingresados ​​en una matriz.

Lo que queda por hacer es formatear las celdas y poner los Días de la semana y el nombre del mes. Entonces ensancha las columnas, aumenta la altura de la fila, aumenta el tamaño de la fuente y alinea el texto:

Dar formato al rango

Luego coloque bordes alrededor de las celdas:

Bordes del calendario

Fusionar y centrar el mes y el año y darle formato:

Nombre del mes y año

Luego apague las líneas de cuadrícula y listo:

Resultado final - Calendario

Este artículo invitado es de Bob Umlas, MVP de Excel. Es del libro Excel Outside the Box. Para ver los otros temas del libro, haga clic aquí.

Articulos interesantes...