Creando un rastreador de actualizaciones de proyectos en Excel utilizando VBA

Rastreador de actualizaciones de proyectos en Excel con VBA

Tres simples pasos para hacer un seguimiento de las actualizaciones del proyecto en Excel y registrarlas

A menudo, estamos involucrados en múltiples proyectos en nuestro trabajo. Cada proyecto involucra varias tareas o sub-tareas dentro de él. Es una buena práctica hacer un seguimiento del estado de estas tareas y proyectos para la gestión del proyecto. Estas tareas o actualizaciones del proyecto se pueden utilizar para nuestro conocimiento, así como para compartir información durante las reuniones del proyecto. Hay diferentes herramientas de gestión de proyectos gratuitas o comerciales disponibles en el mercado, que sirven para el mismo propósito. Sin embargo, quería crear una herramienta simple basada en Excel para mi uso utilizando Visual Basic Applications (VBA).

La funcionalidad de VBA es muy amplia. Se puede utilizar para automatizar el procesamiento de datos, el análisis de datos y la visualización de datos. Esto hace que trabajar y manejar grandes conjuntos de datos dentro de Excel sea muy conveniente. Uno de los hechos sobre VBA es que el código de VBA no se actualiza regularmente similar a los diferentes paquetes en Python. Puede considerarse tanto un mérito como un demérito en diferentes contextos. Sin embargo, uno de los méritos es que una vez que aprendes VBA, puedes usar los mismos conocimientos en el futuro. No necesitas estar actualizado con nuevas versiones o nuevas características en VBA de vez en cuando, porque no hay ninguna (a menos que Microsoft decida introducir nuevas características).

En uno de mis posts anteriores, utilicé VBA para el remuestreo de series de tiempo.

Ejecutando Python a través de Excel VBA – Un caso de remuestreo de series de tiempo

Una evaluación integral del remuestreo de series de tiempo de la radiación solar utilizando VBA, utilizando Python y utilizando Python a través de…

towardsdatascience.com

En este post, voy a compartir cómo creé una herramienta simple para hacer un seguimiento de las actualizaciones del proyecto para mí utilizando Visual Basic Applications (VBA) en Excel en tres simples pasos. Empecemos.

Imagen de Brands&People en Unsplash.

Objetivo

El objetivo era crear una aplicación para hacer un seguimiento de las actualizaciones del proyecto y registrarlas. Quería tener una hoja, donde ingresara cada nueva actualización para una tarea dentro de un proyecto. También quería hacer un seguimiento del tiempo en el que registré esta información en mi archivo. Con un clic de un botón, quería mover cada nueva actualización junto con el tiempo en que se registró a una hoja separada para registrar la información.

Con este propósito, creé un archivo de Excel con dos hojas diferentes. La primera hoja se llamaba SeguimientoTareasProyecto, y la segunda hoja se llamaba LibroRegistro. Ambas hojas comprendían la misma fila de encabezado que contenía seis columnas: FechaHora, Proyecto, Tareas, Responsable, Estado y Actualizaciones.

Utilicé la función =AHORA() en Excel en la columna FechaHora para obtener la hora real. Permití tres opciones en el menú desplegable en la columna Estado: Iniciado, En Progreso y Completado. También creé un botón llamado Actualizar LibroRegistro para registrar automáticamente toda la información sin duplicación en la hoja LibroRegistro. La hoja SeguimientoTareasProyecto se veía así:

Estructura de la hoja SeguimientoTareasProyecto. Ilustración por el Autor.

Pasos de Codificación

Comencé creando una subrutina dentro de un módulo en VBA.

  1. El primer paso consistió en definir el objeto workbook wb para el archivo y dos objetos worksheet, ws1 y ws2 para la hoja SeguimientoTareasProyecto y la hoja LibroRegistro respectivamente. El código se muestra en el siguiente fragmento:
'Definir el workbook y los dos worksheets.Dim wb As WorkbookDim ws1 As Worksheet 'Hoja de seguimiento del proyectoDim ws2 As Worksheet 'Hoja de registroSet wb = ThisWorkbookSet ws1 = ThisWorkbook.Sheets("SeguimientoTareasProyecto")Set ws2 = ThisWorkbook.Sheets("LibroRegistro")

2. El segundo paso consistió en escribir código para contar el número de filas y columnas en las dos hojas. Esto también se puede hacer manualmente. Sin embargo, dado que el número de filas puede cambiar al ingresar actualizaciones del proyecto, se actualiza este proceso. El número de columnas se mantiene fijo (6) para mantener la estructura de las dos hojas consistente. Sin embargo, también se ha codificado con fines de demostración.

En el fragmento de código a continuación, lr1 cuenta el número de filas en la hoja de trabajo ws1 basado en la columna A. lc1 cuenta el número de columnas en la misma hoja de trabajo basado en la fila 1.

'Contar el número de filas y columnas en la hoja ProjectTasksTrackerDim lr1, lc1 As Integerlr1 = ws1.Cells(Rows.Count, "A").End(xlUp).Row lc1 = ws1.Cells(1, Columns.Count).End(xlToLeft).Column 

Nota: Es posible utilizar la referencia a una celda específica al trabajar con macros. Esto es útil al trabajar con conjuntos de datos con la posibilidad de cambios. Por ejemplo, creé un rango con nombre Updates para hacer referencia a la celda F1 en la hoja ProjectTasksTracker. En caso de que se agregue una columna antes, Updates se referirá a la celda G1.

El rango con nombre Updates se hace referencia en el código con update_cell como se muestra a continuación. El número de columna al que pertenece se hace referencia con update_column y el número de columna en términos de alfabeto se da con update_col.

Dim update_cell As RangeSet update_cell = ws1.Range("Updates")Dim update_column As Integerupdate_column = update_cell.ColumnDim update_col As Stringupdate_col = Chr(update_column + 64)MsgBox "La columna de actualizaciones pertenece a: Columna " & update_col
MsgBox para mostrar la referencia de ubicación de Updates según el código anterior. Ilustración por el autor.

En el código en el siguiente paso, vamos a hacer referencia a la columna Updates directamente con el número de columna 6 por conveniencia.

3. El tercer paso es el más importante en este proceso. En este paso, recorrí cada fila (excepto la fila de encabezado y la columna de fecha y hora) en la hoja ProjectTasksTracker y realicé las siguientes operaciones que se dan como tres subpasos:

a. Para cada fila en la hoja ProjectTasksTracker, verifiqué si la columna de actualizaciones está vacía o no para cada tarea. Si una fila en particular en ProjectTasksTracker tenía actualizaciones, entonces conté el número de filas en la hoja Logbook y lo asigné como un entero llamado lr2. Además, declaré un tipo de dato booleano llamado valuesMatch y lo asigné como False por defecto.

b. A continuación, creé un bucle anidado para recorrer cada fila en la hoja Logbook y verifiqué si el contenido de cada columna de la fila en la hoja ProjectTasksTracker (definido como rango rg1) coincidía con el contenido de cada columna de cualquier fila en la hoja Logbook (definido como rango rg2). Si no hay coincidencias entre rg1 y ningún valor de rg2, significaría que la actualización en una fila particular en la hoja ProjectTasksTracker no se había registrado en la hoja Logbook antes. El valor de valuesMatch seguiría siendo False. Si el contenido de una fila en la hoja ProjectTasksTracker coincidía con alguna fila en la hoja Logbook, significaba que la fila ya había sido registrada antes. En ese caso, el valor de valuesMatch cambiaría a True.

c. Si valuesMatch era True al final de ambos bucles for, no habría más procesos. Si valuesMatch era False al final de los dos bucles for, entonces la fila de la hoja ProjectTasksTracker (incluyendo la columna de fecha y hora) se copiaría y pegaría en la hoja Logbook.

Los pasos 3a, b y c se han codificado en el fragmento de código a continuación:

Demostración

El gráfico a continuación muestra las actualizaciones en la hoja ProjectTasksTracker hasta el 20/08/2023 23:32.

Vista inicial de las actualizaciones en la hoja ProjectTasksTracker hasta el 29/08/2023. Ilustración por el autor.

Estas actualizaciones ya se han registrado en la hoja Logbook, como se muestra a continuación, en la misma fecha, 20/08/2023.

Actualizaciones en la hoja Logbook hasta el 20/08/2023. Ilustración por el autor.

A continuación, el 29/08/2023 23:38, realicé algunos cambios en la hoja ProjectTasksTracker, resaltados en color rojo (cambios en las dos primeras filas y agregué la última fila). Luego hice clic en el botón “Actualizar Logbook”, al cual se le asigna la macro descrita en la sección de Pasos de Codificación anterior.

Cambios realizados en la hoja ProjectTasksTracker hasta el 29/08/2023. Ilustración por el autor.

Estos nuevos cambios se registran en la hoja Logbook. Las filas en la parte inferior resaltadas en color rojo son los cambios realizados el 29/08/2023. Las otras actualizaciones que se registraron anteriormente permanecen iguales.

Las nuevas actualizaciones se registran en la hoja Logbook. Las actualizaciones anteriores permanecen iguales.

Conclusión

En esta publicación, describí algunos pasos de codificación para crear un rastreador simple en Excel para ingresar actualizaciones de tareas de proyectos y registrarlas. Si se realizan cambios o adiciones en la hoja ProjectTasksTracker y se ejecuta la macro, esto copiará y pegará esas actualizaciones en la hoja Logbook. Sin embargo, si no hay cambios en la hoja ProjectTasksTracker, las actualizaciones permanecerán iguales en ambas hojas después de hacer clic en el botón.

También es posible crear funcionalidades adicionales, como ordenar las filas en la hoja Logbook en un orden específico al final. Y también es posible crear un nuevo archivo para registrar las actualizaciones del proyecto en lugar de registrarlas en una hoja separada en el mismo archivo de Excel. En ese caso, es necesario redefinir los destinos del libro y la hoja de trabajo en el código. Estos pasos no están incluidos en esta publicación para mantenerla simple. El código y el archivo de Excel con macros utilizados en esta publicación están disponibles en este repositorio de GitHub. ¡Gracias por leer!

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Conoce circ2CBA un modelo novedoso de aprendizaje profundo que revoluciona la predicción de los sitios de unión circRNA-RBP

En un reciente avance, un equipo de investigadores de China ha presentado un modelo de aprendizaje profundo, llamado ...

Inteligencia Artificial

Aprendamos Inteligencia Artificial Juntos - Boletín de la Comunidad Towards AI #4

Buenos días, estimados entusiastas de la IA. En este número, compartimos un nuevo video para nuestra serie de videos ...

Inteligencia Artificial

Reka AI presenta a Yasa-1 un asistente de lenguaje multimodal con sensores visuales y auditivos que puede tomar acciones mediante la ejecución de código.

La demanda de asistentes de lenguaje más avanzados y versátiles ha aumentado constantemente en el panorama en constan...

Inteligencia Artificial

Investigadores de NTU Singapur proponen OtterHD-8B un innovador modelo de IA multimodal evolucionado a partir de Fuyu-8B

Investigadores de S-Lab, Universidad Tecnológica de Nanyang, Singapur, presentan OtterHD-8B, un innovador modelo mult...