Me decidí hacer mi propia hoja de todos mis días. El diseño será un poco diferente, cada columna será un año y tendremos tantas columnas como años. Evidentemente esto lo haremos con una macro, luego cada quien puede modificar los parámetros, incluso podemos, por ejemplo, diseñar una hoja donde el usuario anote a un recuadro con ayuda de un combo, su fecha de nacimiento y le genere automáticamente su hoja tipo "Todos mis días".
El procedimiento será el siguiente:
Lo primero que hay que hacer es cambiarle el formato a todas las celdas a tipo fecha, si no sabes como pregúntale a quién más confianza le tengas. Luego anota la fecha de tu nacimiento en la columna A, renlgón 1. Osea, así:
No es buena costumbre, pero a veces ante la prisa, es bueno ahorrar escritura de programación y en vez de teclear código grabar movimientos con las macros y luego injertarlos en el código. Haremos eso por esta vez para mostrar la técnica. Lo que queremos ahora es tener la columna A con todos los días de un año biológico, y como el primer año biológico como todos los demás tienen 365 días tenemos que copiar ese dato pero con un día aumentado en la columna de abajo, de forma que A2 es el ayer de A1, y así suscesivamente. Obviamente que es muy fácil hacer eso con un copy paste. Pero no nos serviría (salvo haciendo otras cosas) para la segunda columna, así que haremos el copy paste pero con una macro. Es decir esta macro copiara lo que hay en A1 en A2, primero copia luego baja y pone el valor. Primero hay que dar click en referencias relativas, decir grabar macro y proceder. Cuando aparezca la caja de diálogo de macro le damos un nombre, "Baja".
Cuando demos aceptar bajaremos una celda para quedar en A2. Al dar detener, quedará dada de alta una poderosisima macro que lo que hace es bajar una casilla. Ese será el código bajar que utilizaremos.
Repetimos el proceso para copiar pero con un uno aumentado, que en el contexto del formato de fecha será un día.
Podemos pedir el menu de macros y nos aparecerán los dos códigos que tenemos.
Cuando damos en el botón modificar, podemos acceder al código que se ve así:
Ahora si, tenemos este código:
Sub Bajar()
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub
Sub AumentaUnDia()
ActiveCell.FormulaR1C1 = "=+R[-1]C+1"
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub
Y con ese creamos este:
Sub CalculaColumna()
ActiveCell.Offset(1, 0).Range("A1").Select 'primera macro
For DiasDeUnAnio = 1 To 364
ActiveCell.FormulaR1C1 = "=+R[-1]C+1" 'segunda macro
ActiveCell.Offset(1, 0).Range("A1").Select
Next
End Sub
En este momento, la macro te ha dejado en la casilla A366. Así que grabas una macro que se llama "CambiaSiguienteColumna" y te haces uno a la derecha y todo hasta arriba. Es decir, das grabar nueva macro, la llamas "CambiaSiguienteColumna", te mueves a la B366, luego das tecla fin, tecla arriba y detienes la macro. El resultado es que ahora tienes una macro con este código:
Sub CambiaSiquienteColumna()
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.End(xlUp).Select
End Sub
Cuando se ejecute este código desde cualquier casilla en el renglon 366 si irá al primer renglón de la siguiente columna. Este proceso se podría hacer también de otros modos, pero este modo intuitivo de manejo de las macros es mejor para el principiante.
Ahora repites una operación similar a aquella en la que sumaste un día, pero un poco diferente, como resultado de la macro anterior, quedas en la columna B1, así que ahora tienes que sumarle a la casilla de la izquierda 1 año, osea 365 días. Para hacer la macro: activas macro (cuidando que esté en referencias relativas), presionas signo de más (con esto estás en modo de espera de cálculo), tecleas 365, pones otro más, mueves la flecha izquierda, copias y enter. Apagas macro.
El proceso se ve así:
Y el código queda así, si le llamaste a tu macro "SumaUnAnio"
Sub SumaUnAnio()
' SumaUnAnio Macro
ActiveCell.FormulaR1C1 = "=+RC[-1]+365"
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub
Solo que como aprecias en la figura te deja en la celda B2, siendo que quieres estar en la B1 para aplicar tu primer macro, así que la regresas grabando una macro que suba una casilla, que es esta:
Sub subircelda()
ActiveCell.Offset(-1, 0).Range("A1").Select
End Sub
Y ahora vienen los suspiros, pues llegó la hora de generar tantas columnas como años. Se puede hacer haciendo referencia a las macros pues también son subrutinas, o bien directamente que es como procederemos. Yo tengo prácticamente 45, así que va así la cosa:
Sub TodosMisDias()
For Edad = 1 To 45
'dias del primer anio, primer columna
ActiveCell.Offset(1, 0).Range("A1").Select 'primera macro
For DiasDeUnAnio = 1 To 364
ActiveCell.FormulaR1C1 = "=+R[-1]C+1" 'segunda macro
ActiveCell.Offset(1, 0).Range("A1").Select
Next
'cambiar de columna
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.End(xlUp).Select
'sumar un anio
ActiveCell.FormulaR1C1 = "=+RC[-1]+365"
ActiveCell.Offset(1, 0).Range("A1").Select
'subir una celda
ActiveCell.Offset(-1, 0).Range("A1").Select
Next
End Sub
Ahora corre la macro poniendo tus parámetros de edad y fecha de nacimiento y tendrás esto.
Si cabe tu vida y puedes ver los días eres un joven si no como yo un anciano. Obtendrás una sensación muy agradable cuando veas correr la macro, lo que en verdad estarás viendo, es pasar tu vida, a la velocidad que hoy crees que pasó.
No hay comentarios:
Publicar un comentario