| Artículos | 01 JUL 2004

Simulación de Project en la hoja de cálculo

Tags: Histórico
Rodolfo de Benito.
Suponga que quiere hacer una hoja de cálculo para estimar la duración de un proyecto de desarrollo de software. El proyecto está desglosado en tareas y ya tiene estimada la duración aproximada de cada una. Ahora le gustaría saber cuánto dura el proyecto, cuándo comienza y finaliza cada tarea y obtener una representación visual día a día mediante un diagrama Gantt. Este trabajo plantea varios problemas como, por ejemplo, simular un scroll de pantalla para visualizar el diagrama Gantt, calcular la fecha de inicio en base a la precedencia de la tarea o hallar su terminación en función de su comienzo, duración y días laborables.

Calcular la fecha de terminación de una
tarea teniendo en cuenta los días laborables
Cada tarea del proyecto consta de un nombre, duración y comienzo (fecha de inicio). Con estos datos es sencillo calcular la fecha de finalización, basta con sumar a la fecha de comienzo la duración y ya está. El problema es que nuestros recursos humanos no trabajan los fines de semana ni los días festivos y, por tanto, la fecha de terminación calculada no es correcta.
Afortunadamente, Excel cuenta con la función Dia.Lab(inicio; días; festivos) que consigue precisamente lo que nos interesa. Antes de utilizarla es necesario activarla puesto que pertenece a un paquete de funciones, generalmente no instalado por defecto. Actívela seleccionando en el menú Herramientas » Complementos y marque la casilla Herramientas para análisis.
La función Dia.Lab considera sábado y domingo como días festivos pero no tendrá en cuenta otras festividades del calendario a menos que se lo indiquemos en el parámetro opcional festivos. Este parámetro es un rango de celdas con las fechas correspondientes a los días de fiesta. Sería una buena idea que tuviera, en una hoja aparte, las festividades del año en las que se desarrolla el proyecto y que defina un nombre de rango para dichas celdas (ver sección Trucos Ofimática en PC World nº 206), por ejemplo, fiestas2004.
Sólo resta situarse en la columna Terminación de la primera tarea e introducir la función =DIA.LAB(C5;B5;fiestas2004). La celda C5 contendrá la fecha de inicio y B5 la duración. Obviamente sólo hay que calcular la terminación cuando hay tarea, es decir, =SI(A5=””;””;DIA.LAB(C5;B5-1;fiestas2004)) donde A5 contiene el nombre de la tarea. Podemos arrastrar esta fórmula a las restantes tareas, pero no hay que olvidar que la fecha de inicio de la primera coincidirá con la de inicio del proyecto y que tendremos que calcular las restantes.
Si las tareas son secuenciales y la predecesora es siempre la anterior entonces es trivial calcular el inicio. Por ejemplo, para el comienzo de la segunda sería =DIA.LAB(D5;1;fiestas2004) siendo D5 la terminación de la anterior, es decir, el día laborable siguiente a la fecha de terminación de su predecesora. Podríamos arrastrar la fórmula a las tareas restantes si modificamos la fórmula para que sólo calcule la fecha si la tarea está creada: =SI(A5=””;””; DIA.LAB(D5;1;fiestas2004)).
¿Y si no comienzan secuencialmente al término de la anterior? En el siguiente truco mostramos una posible solución.

Crear una lista desplegable mediante validación de datos
Considerar tareas secuenciales y contiguas restringe mucho el tipo de proyectos que podemos implementar. Lo normal es que al crear una nueva su inicio sea, por defecto, la fecha actual, aunque el usuario podría modificarla manualmente en cualquier momento. Por ejemplo, la fecha de inicio de la tarea dos sería =SI(A6=””;””; HOY()) donde A6 es el nombre de la tarea (comprobamos si está en blanco) y la función Hoy() devuelve la fecha actual.
Pero, además, es conveniente una columna, que llamaremos Precedente, donde podrá seleccionar de una lista desplegable el nombre de la que precede a la actual, si es que tiene predecesora, para tenerlo en cuenta a la hora de calcular el inicio de la tarea (consideraremos que comienza al término de su precedente).
Por tanto hay tres problemas: crear una lista desplegable con los nombres de las tareas, localizar la fecha de finalización de la precedente y calcular el inicio de la actual.
Para crear la lista desplegable con los nombres de las tareas, y aquí es donde realmente empieza el truco, es preciso:
1. Seleccionar todas las celdas de la columna predecesora. Por ejemplo, podemos considerar un máximo de 25 tareas.
2. Escoger en el menú Datos » Validar.
3. Seleccionar Lista en la lista desplegable Permitir, pulsar el botón asociado a Origen y marcar todas las celdas que contendrá el nombre de las tareas del proyecto (recuerde que consideramos un máximo de 25 y que por lo tanto tendrá que marcar este número de celdas).
4. Activar las casillas de verificación: Omitir blancos y Celda con lista desplegable; pulsar Aceptar.
Compruebe su funcionamiento seleccionando la tarea uno como predecesora de la dos. Ahora sólo queda actualizar el comienzo de esta tarea, que será al término de la primera. Para ello es necesario localizar la fecha de terminación de la predecesora, trabajo que podemos confiar a la función Buscarv (ver sección Trucos Ofimática en PC World nº 206) y añadirle un día laborable. Es decir, la fórmula de Comienzo para la tarea dos sería =DIA.LAB(BUSCARV(E6;$A$5:$D$30;4);1;fiestas2004) siendo E6 el nombre de la tarea precedente, $A$5:$D$30 el nombre de todas las tareas (se podría utilizar un nombre de rango) y 4 la posición de la columna que contiene la fecha de finalización.
Recordemos que, por defecto, el comienzo de una nueva tarea será la fecha actual excepto si se teclea una nueva o se selecciona una predecesora; es decir, habrá que modificar la fórmula anterior para que contemple todo ello: =SI(A6=””;””;SI(E6=””;HOY();DIA.LAB(BUSCARV(E6;$A$5:$D$30;4);1;fiestas2004)))
Por último, arrastraremos esta fórmula al resto de las tareas.

Crear un control Barra de desplazamiento y
funciones de fecha para simular un scroll de pantalla
Acompañando a toda esta información mostraremos, a su derecha, un diagrama Gantt que representará las tareas respecto a su duración en el tiempo (día a día). Con la finalidad de ahorrar espacio en la hoja, y por motivos didácticos, el diagrama será mensual. Por ejemplo, si el proyecto se inicia el 15 de mayo se “dibujarán” las tareas del mes de mayo.
Para visualizar el diagrama en otras fechas, contaremos con una barra de desplazamiento horizontal y una celda con la fecha inicial del diagrama, que por defecto será la fecha de inicio del proyecto. La idea es que al manipular la barra de desplazamiento se incremente o disminuya la fecha inicial del diagrama en un mes. Por ejemplo, si inicialmente es mayo-2004 y desplazamos la barra hacia la derecha dos unidades obtendremos el diagrama de julio. Vayamos por partes. Será necesario:
1. Modificar la anchura de las columnas que contendrá el Gantt. Seleccione 31 columnas, por ejemplo, del la F a la AJ y seleccione en el menú Formato » Columna » Ancho. Teclee 2 y pulse Aceptar.
2. Insertar la barra de desplazamiento. Visualice la barra de herramientas Cuadro de controles, pulse el control Barra de desplazamiento y trace la barra en la parte superior de lo que será el diagrama Gantt. Asegúrese que la nueva barra de desplazamiento está selecc

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información