lunes, febrero 15, 2010

Diagramas Gantt dinámicos en Excel

En los albores de este blog publiqué una nota sobre cómo construir un diagrama Gantt con Excel. Mostramos allí dos posibilidades: usando formato condicional o usando gráficos.

En esta nota mostraremos como construir un diagrama de Gantt dinámico que nos permite mostrar en pantalla tareas que se extienden por períodos muy largos.

Cuando construimos el diagrama de Gantt en Excel con formato condicional, usamos una fila para cada tarea y una celda para cada unidad de tiempo. El modelo general consiste en usar la primer columna para definir las tareas, la segunda para la fecha de iniciación, la tercera para la duración, la cuarta para la fecha de finalización y a partir de la quinta columna usamos cada celda para representar una unidad de tiempo. Este es un ejemplo clásico



Las barras de color del diagrama las logramos usando estas fórmulas de formato condicional:



para las filas pares =Y($C3=F$2,$E3=F$2,RESIDUO(FILA(),2)=0)

para las filas impares =Y($C3=F$2,$E3;=F$2,RESIDUO(FILA(),2)=1)

Para construir la escala del tiempo (en la fila 2) ponemos en la celda F2 esta fórmula

=MIN(C3:C6)+7

que calcula la primer fecha más una semana de la primer tarea a realizar. En la celda G2 ponemos "=F2+7" y así sucesivamente.

Si observamos atentamente veremos que si bien la primer tarea concluye el 15/02/10, el diagrama parece indicar que lo hace el 12/02/10. Esto se debe a que usamos una resolución semanal para mostrar las tareas.
Podemos solucionar este problema usando una resolución diaria. En total necesitamos 90 días (la última fecha es el 26/03/10).

Si bien esto resuelve el problema, nos crea uno nuevo, el diagrama excede los límites de la pantalla



La solución ideal es, por lo tanto, trabajar con una resolución diaria pero que no exceda el ancho de la pantalla.

Empezamos por insertar algunas filas por encima de nuestro diagrama.



En la celda E3 calculamos la primer fecha del proyecto usando la función MIN. En la celda F5 creamos una referencia a la celda E3; en la celda G5 ponemos "=F5+1" y así sucesivamente para crear la escala de tiempo.

En la celda F6 creamos una referencia a la celda F5, seleccionamos el rango que comprende la semana (F6:L6) y aplicamos "combinar y centrar"


Cambiamos el ancho de las columnas de la selección a 0.6, quitamos los bordes interiores y obtenemos este resultado


Nótese que la fecha 01/01/10 parece ocupar una columna pero en realidad comprende 7 columnas, una para cada día de la semana.

Volvemos a aplicar esta técnica a cada grupo de siete columnas hasta obtener este resultado


Hemos mejorado en buena medida nuestro diagrama, pero aún nos queda una cuestión por solucionar.

Nuestro diagrama cubre ahora 13 semanas, con resolución diaria. Pero, ¿que pasa si una tarea se extienda por más de de 90 días del inicio del proyecto?
Esto lo solucionaremos creando un diagrama Gantt dinámico con fórmulas sencillas y una barra de desplazamiento de la barra de formularios.

Introducimos estos cambios en nuestro modelo:

1 – insertamos una columna a la izquierda de la hoja (la tabla del diagrama empieza ahora en la columna C).

2 – en la celda G3 ponemos la fórmula "=MIN(D5:D8)+A2"; el papel a cumplir por la celda A2 será explicado enseguida


3 –reemplazamos la fórmula en la celda G4 por una referencia a la celda G3

4 – en la pestaña Programador abrimos la etiqueta Insertar e insertamos una barra de desplazamiento


5 – definimos los parámetros de la barra de desplazamiento en la pestaña "control" del menú "formato de control"


Nótese que vinculamos el control con la celda A2. Esto hará que cuando movemos el cursor de la barra, la fecha en la celda G3 se va incrementando y así el resto de las celdas.

Para ejemplificarlo cambiamos la cantidad de días en la duración y podemos ver como al desplazar el cursor de la barra, se van modificando las fechas y actualizando el diagrama




El archivo puede descargarse aquí 
.

viernes, febrero 12, 2010

Datos Externos en tablas dinámicas de Excel – ampliación

En la nota anterior sobre uso de archivos de texto como fuente para una tabla dinámica, vimos cómo agregar un origen de datos a la lista de las posibilidades del MS Query. Los archivos de textos usan distintos elementos para separar los campos como comas (archivos .cvs), espacios o tabs. Pero también puede darse el caso que se use un separador no convencional como el pipe (|).

En esos casos tendremos que agregar algunos pasos a nuestra solución, lo que mostraremos en esta nota.

Supongamos que queremos analizar los datos de este archivo de texto con una tabla dinámica



Como puede observarse los campos están separados por el carácter "|" (pipe).

Empezamos el proceso tal como lo mostramos en la nota anterior hasta llegar a la etapa "Crear nuevo origen de datos"





Como en el caso anterior elegimos un controlador adecuado para el tipo de datos (texto)



Apretamos el botón Conectar lo que abre el diálogo "ODBC Text Setup"



En esta etapa apretamos el botón Options lo que abre una nueva zona en el formulario



Apretamos el botón Define Format para definir las definiciones del nuevo tipo de archivo. En la parte izquierda del formulario señalamos el archivo que queremos usar (el que sirve de modelo para el nuevo origen), si tiene encabezados y los más importante, cuál es el separador (delimiter)


Luego apretamos el botón Guess lo que nos permite ver las columnas, cambiar el tipo de datos y el nombre del campo



Apretamos OK y en el formulario de Crear nuevo origen de datos apretamos Aceptar.

Esto nos lleva nuevamente al formulario Elegir origen de datos




Al aceptar el nuevo origen volvemos al diálogo del asistente para consultas. También podemos interrumpir el proceso y usar el nuevo origen más adelante.

martes, febrero 09, 2010

Tablas dinámicas en Excel con archivos de texto externos

En las primeras etapas de este blog escribí una serie de notas sobre tablas dinámicas en Excel. Uno de los temas que pasé por alto es el del uso de fuentes de datos externas para construir tablas dinámicas.

La importancia del tema es evidente. Una hoja en Excel Clásico puede contener hasta 65536 filas, lo cual puede ser una limitación crítica si tenemos que analizar grandes cantidades de datos. Si bien Excel 2007 y 2010 han extendido este límite más allá del millón de filas, no creo que un cuaderno con semejante cantidad de datos sea una alternativa razonable.

Excel viene provisto con un mecanismo que le permite conectarse con fuentes de datos externas. Hemos visto este mecanismo en acción en algunas de las notas sobre el uso de MS Query y la importación de datos externos a hojas de Excel.

En esta nota mostraremos como crear una tabla dinámica a partir de datos remotos, es decir, que no se encuentran en el cuaderno que contiene la tabla dinámica.

Estos datos remotos pueden estar en archivos de distinto tipo como Access (.mdb), Texto (.csv, .txt), Excel y otros. Si la fuente de datos aparece en la lista de Excel, el proceso es sencillo. Pero en ciertos casos la fuente no existe y debemos crearla.

En nuestro caso vamos suponer que tenemos los datos en un archivo de texto tipo .csv (comma separated values). En Excel Clásico empezamos el proceso abriendo un cuaderno Excel y usando el menú Datos-Informe de Tablas y Gráficos Dinámicos elegimos la opción Fuente de datos externa. Al apretar el botón Siguiente se abre el diálogo para ubicar la fuente de los datos



En nuestro caso podemos ver que el tipo de datos que queremos usar no figura en la lista. En este caso usamos la opción "Nuevo origen de datos"




En la ventanilla superior ponemos el nombre que queremos dar a la nueva fuente (archivoTXT o cualquier otro que crean conveniente), en la ventanilla 2 elegimos el controlador (driver) indicado para el tipo de datos y finalmente apretamos el botón Conectar.

En el nuevo formulario que se abre ubicamos el archivo que queremos que sirva de base a nuestra tabla dinámica



Si el directorio no coincide con el que aparece en el formulario, quitamos la señal de la casilla "Use current directory" para poder elegir la ubicación indicada.

Finalmente apretamos OK y Aceptar. Con este hemos creado una nueva fuente de datos



El próximo paso es elegir el archivo que contiene los datos



Y seguimos apretando Aceptar hasta llegar a la etapa final



Aquí señalamos la opción "Devolver datos a Microsoft Excel" y Aceptar, lo que no lleva de regreso al asistente de tablas dinámicas (por si no se dieron cuenta, hasta ahora hemos trabajado en el MS Query)



El próximo paso nos lleva al conocido formulario de ubicación de la tabla dinámica en la hoja



Al apretar Aceptar se creará la tabla dinámica



En Excel 2007 hay algunas diferencias, por lo que mostraremos dos caminos. Excel 2007 nos permite usar la interfaz de tablas dinámicas de Excel Clásico usando el atajo de teclado Alt+T+B



A partir de aquí procedemos como mostramos más arriba.

Otra alternativa es comenzar el proceso en la pestaña Datos – Obtener datos externos-de otras fuentes-MS Query



Esto abre el diálogo del MS Query para elegir el origen de datos, tal como sucede con Excel Clásico.