martes, enero 28, 2014

Usos del Power Query - importar y transformar datos externos

En la nota anterior vimos cómo importar datos externos con el Power Query, más precisamente una listas de carpetas y archivos. De la misma manera podemos importar datos externos diversas fuentes como bases de datos, Web, archivos texto, archivos Excel, etc.
Power Query nos permite también transformar los datos originales antes de transferirlos a una hoja de Excel o al modelo de datos (tema que será tratado en otra nota).

Siguiendo con el ejemplo de la nota anterior la ventana del editor del Query se ve así

editor del Power Query



























La ventana del editor tiene una barra de fórmulas, un área de datos (filas y columnas) y dos barras a los costados ("Navigator" y "Steps").

Como podrán apreciar, en los encabezamientos de las columnas aparece un triángulo similar al que aparece cuando aplicamos Autofiltro a una tabla en la hoja de Excel. Estos triángulos tiene la misma función en la ventana de Query

Autofiltro en la ventana del query

Esto nos permite filtrar las filas de la misma manera como lo hacemos con las tablas en Excel. Por ejemplo, si queremos que la venta del query muestre sólo las filas con archivos de tipo ".png", filtramos de acuerdo a este criterio

query con autofiltro
Una vez aplicado el filtro podemos apretar el botón "Done" en la ventana del query y sólo las filas filtradas serán transferidas a la hoja de Excel

hoja Excel con datos del Query





















Si queremos cambiar el resultado de la consulta, abrimos el editor del query usando el comando Filter & Shape

Boton FIlter & Shape
Supongamos ahora que queremos transferir sólo los archivos de tipo ".png" creados en el 2014; todo los que hacemos es aplicar un nuevo autofiltro a la columna "Date Created"

Autofiltro de fechas en el query


Haciendo un clic con el botón derecho del mouse podemos ver las distintas posiblidades para cada una de las columnas.  Por ejemplo, un clic en el encabezado de la columna "Content" nos muestra

ventana del Power Query

Como ven podemos eliminar la columna (Remove) o eliminar todas las otras columnas (Remove other columns), duplicarla, cambiar el tipo de datos, buscar y reemplazar valores (Replace values),etc. Especialmente práctica es la función "Unpivot Columns" como ya hemos mostrado en esta nota.

Supongamos que queremos eliminar todas las columnas excepto "Name", "Extension" y "Date Created". Lo que hacemos es seleccionar estas columnas (clic sobre el encabezamiento manteniendo el botón Ctrl apretado) y activar la opción "Remove other columns"

Ventana del Power Query



















Ahora vamos a explorar las posibilidades de transformación de los datos de la columna "Date Created". Con un clic del botón derecho del mouse abrimos el menú contextual

ventana del Power Query





















Debido al tipo de datos de la columna, la función "Transform" nos muestra las distintas posibilidades de transformación: fecha (Date), hora (Time), día (Day), etc. Por ejemplo, si elegimos la opción "Date", las fechas aparecerán sin las horas.

Si expandimos la barra "Steps" a la derecha de la ventana del Query, podemos ver los pasos que hemos realizado

ventana del POwer Query



























Cuando apuntamos a una de las acciones aparece una X. Un clic sobre la X cancela la operación, como la acción "Deshacer" (undo, Ctrl Z) en Excel.

En la próxima nota veremos más usos de las posibilidades de transformación de datos con Power Query.

jueves, enero 23, 2014

Usos del Power Query - importar una lista de archivos a Excel

Las nuevas herramientas que Microsoft ha incorporado a Excel hace que las versiones anteriores a Excel 2010 parezcan prehistóricas. Me refiero a las herramientas de BI (Business Intelligence, Inteligencia de negocios), específicamente Power Pivot y Power Query.
A quien le interese el Power Pivot  (y a todo analista de datos le debe interesar) le recomiendo visitar el sitio de Miguel Escobar, Powered Solutions. Miguel ofrece cursos de Power Pivot y quien esté interesado puede acceder a la información con un clic en el banner que aparece en la columna derecha (aclaración: por cada inscripción al curso recibo una comisión)

En esta y otras futuras notas me ocuparé de usos prácticos del complemento Power Query. Algunos de mis memoriosos lectores recordará la nota sobre cómo importar una lista de archivos usando funciones XLM (las viejas macrofunciones de Excel 4). Una nota posterior trataba sobre como generar la lista usando Vba. Ambas técnicas tienen un cierto grado de complejidad y requieren cierto nivel de conocimientos en Excel.

El complemento Power Query simplifica la tarea, lo que mostraremos con este ejemplo (el menú del Power Query en mi máquina está en inglés por lo que me discuplo de antemano). Supongamos que quiero crear una lista con todos los archivos que aparecen en mi carpeta "Blog".


Como puede apreciarse, bajo la carpeta Blog hay otras y también archivos de diversos tipos.
Después de descaragar e instalar el complemento (Excel 2010 y 2013), veremos una nueva pestaña en la ventana de Excel: Power Query


En el grupo "Get External Data" (datos externos), elegimos la opción "From File - From Folder"; Excel abre una ventanilla donde seleccionamos la ubicación deseada


Al apretar OK dos veces, Excel transfiere los datos a la ventana del editor del Query (más  adelante transferiremos los datos a la hoja de Excel).


En esta ventana del editor podemos ordenar, seleccionar y transformar datos, agregar o eliminar columnas y muchas otras operaciones. Nótese además que el editor cuenta con una barra de fórmulas (pero de todo esto nos ocuparemos en otras notas).

Después de examinar los datos, todo los que nos queda por hacer es apretar "Done". Excel transfiere los datos del editor del Query a una hoja de Excel

















En esta nota tampoco nos ocuparemos de la ventanilla de las definiciones del Query (Query Setup) que aparece a la derecha de la hoja. Sencillamente la cerramos apretando el "x" en el icono "Show Query Settings" en la barra de opciones. ¡Listo! En la hoja de Excel tenemos una tabla con todos los datos de los archivos de la carpeta















En la próxima nota veremos, basados en este ejemplo, como podemos transformar los datos antes de transferirlos a Excel.

miércoles, enero 22, 2014

Gráficos cascada (Waterfall) con valores negativos

Hace poco más de cuatro años atrás publiqué este post sobre cómo crear gráficos de tipo "Waterfall" ("Cascada" o "Flying Bricks") con Excel.
Este tipo de gráficos permite ver el efecto acumulado de valores positivos y negativos en una secuencia. En el post mostramos este ejemplo, partiendo de los resultados anuales de una cadena de tiendas

tabla de datos
mostramos este gráfico para mostrar el aporte de cada tiena al cambio en el resultado anual de la tienda

gráfico de columnas apiladas

Este gráfico lo creamos usando el gráfico de columnas apiladas elaborando los datos con una tabla auxiliar (las fórmulas y técnicas pueden verse en la nota del enlace, también podrán descargar el archivo del ejemplo).

Esta técnica tiene un inconveniente, como me lo hace notar uno de mis lectores. Los valores de los cambios no cruzan el eje horizontal. Para demostrarlo, supongamos que nuestra cadena de tiendas ha tenido un año 2013 terrible

cuadro de datos

Aplicando la técnica que usamos hasta ahora obtendríamos este gráfico


grafico
La columna ("ladrillo") tendría que aparecer cruzando el eje horizontal, entrando en la zona de los números negativos:

grafico


Para solucionar este problema tendremos que cambiarlas fórmulas en la tabla auxiliar. Esta es la tabla del modelo sencillo










Esta es la nueva tabla auxiliar sobre la cual construimos el gráfico









A diferencia del modelo sencillo, calculamos dos columnas para los valores positivos (Positivo +; Positivo -) y dos columnas para los valores negativos (Negativo +; Negativo -). "Positivo +" y "Negativo +" para los valores que se mostrarán por encima del eje horizontal; "Positivo -" y "Negativo -" para los valores que aparecerán por debajo del eje de la X.

Las fórmulas de las columnas G y H son obvias.

La fórmula de la columna I (Acumulado) es:

=MAX(0,MIN(SUMA(G$3:G3),SUMA(G$3:G4)))+MIN(0,MAX(SUMA(G$3:G3),SUMA(G$3:G4)))

Esta fórmula crea la parte "invisible" de la columna.

La fórmula en la columna J (Positivo +): =MAX(0,MIN(SUMA(G$3:G4),G4))

La fórmula en la columna K (Positivo -): =-MAX(0,G4-J4) (prestar atención al "-")

La fórmula en la columna L (Negativo +): =MAX(0,M4-G4)

La fórmula en la columna M (Negativo -): =MIN(0,MAX(SUMA(G$3:G4),G4))

Para crear el gráfico seleccionamos primero el rango F2:F8 y manteniendo el botón Ctrl apretado seleccionamos el rango H2:N8. Seleccionamos el gráfico de columnas apiladas
















El último paso es aplicar los formatos necesarios.

El archivo se puede descargar aquí.

domingo, enero 19, 2014

El extraño caso del cálculo manual persistente

Excel tiene una manera peculiar de manejar las opciones de cálculo. Estas pueden ser manual, automático o automático excepto en tablas de datos. En las Opciones de Excel, en Fórmulas podemos ver las posibilidades


Las opciones de cálculo son hereditarias (ya verán por qué) y siguen estas reglas:

• El primer documento abierto utiliza el modo de cálculo con la que se guardó. Documentos abiertos posteriormente utilizan el mismo modo.

• Al cambiar el modo de cálculo de un documento abierto se cambia el modo de todos los documentos abiertos.

• Si se cierran todos los documentos y crear un documento nuevo, el nuevo documento utiliza el mismo modo de cálculo como los documentos cerrados previamente.

• Si ha cambiado el modo de cálculo en un libro y se guarda el archivo, se guarda el modo de cálculo actual.


Si cerramos una sesión de Excel y el último cuaderno que guardamos estaba definido con cálculo automático, al abrir una nueva sesión esperamos que también el primer cuaderno que creamos esté definido con cálculo automático.

Sin embargo mi Excel insistía en abrir el primer cuaderno de cada sesión en estado de cálculo manual. Intenté todos los remedios conocidos (guardar un cuaderno en Automático y cerrar Excel, revisar si hay un WorkbookOpen event en algún Add-in, si el cuaderno en XLSTART está definido con cálculo manual). ¡Nada! Es más, no tengo ningún archivo en XLSTART, así que mi sesión se abre sin ningún "Libro1".

Al borde de la desesperación encontré el problema: de alguna manera que no logro entender, había guardado el cuaderno Personal.xlsb con la opción Manual.

Podemos solucionar este problema de dos maneras:

Por defecto, el cuaderno Personal está oculto. Este cuaderno tiene una hoja y para cambiar sus propiedades tenemos que volverlo visible



Una vez visible cambiamos la propiedad, guardamos y volvemos a ocultar.

Otra posibilidad, sin necesidad de mostrar el Personal, es abrir el editor de Vb (Alt+F11), nos aseguramos que el Personal sea el cuaderno activo y en la ventanilla Inmediato ponemos:

Workbooks("Personal.xlsb").Parent.Calculation = xlCalculationAutomatic: Workbooks("Personal.xlsb").Save







miércoles, enero 15, 2014

Como usar la calculadora del Windows en Excel

Aprovechando un momento de descanso en mi viaje de trabajo, publico este tip rápido. ¿Se acuerdan de la calculadora del Windows?


A pesar que Excel nos permite hacer todo cálculo que queramos, a veces es prático tener esta calculadora a nuestra disposición.

Para activar la calculadora no tenemos que salir de Excel, sino que podemos agregarla a la barra de acceso rápido.

Este video muestra el proceso




Tal vez parezca supérfluo agregarla a la barra de acceso rápido, pero la calculadora tiene muchas más funciones y usos de lo que aparenta.



Por ejemplo, si tenemos que realizar conversiones entre unidades (Ctrl+U)


O diferencia entre fechas (Ctrl+E)


También podemos convertirla en calculadora científica, de programadores, etc.

Una alternativa interesante son las funcionalidades que aparecen bajo el rótulo Worksheets



Por ejemplo, para calcular la cuota de un préstamo



domingo, enero 12, 2014

Ordenar y jerarquizar por valores en tablas dinámicas

Un post rápido mientras espero subir a mi vuelo a Milán (cuestiones de trabajo, no de placer). Podemos ordenar las tablas dinámicas de acuerdo al área de filas o de valores. Esto no es ninguna novedad, pero la consulta de una lectora me da la oportunidad de mostrar otra de las nuevas funcionallidades introducidas en el nuevo Excel (2010 - 2013) en lo que hace a tablas dinámicas.

Supongamos estos hipotéticos datos de ventas de una red y el reporte dinámico que hemos generado


Para mostrar las ventas jerarquizadas por producto, nos basta con ordenar el reporte


con este resultado
Pero también podemos mostrar el rango de las ventas, sin mostrar el volumen usando "Mostrar Valores como...Clasificar de Mayor a Menor"


El resultado es este

También podemos agregar por una segunda vez el campo "Venta" y obtener este efecto


jueves, enero 09, 2014

Reemplazar referencias en fórmulas de Excel con nombres definidos

El uso nombres definidos en Excel hace más legibles nuestras fórmulas.

Obviamente es mucho más claro entender qué calcula la fórmula

=Ventas-Costo_de_Ventas 

que la equivalente

=B2-B3

ejemplo de fórmula con nombres definidos

Esta ventaja se hace más evidente cuando más complejas sean nuestras fórmulas.

A veces sucede que decidimos usar nombres después de haber desarrollado buena parte de nuestro modelo (en el exacto momento en que empezamos a no entender lo que hicimos).

Pero no hay que desesperar; podemos reemplazar las referencias en las fórmulas por los nombres que se refieren a las referencias con facilidad.

Volviendo a nuestro ejemplo sencillo creamos los nombres

crear desde la selección


Luego, seleccionamos las celdas con las fórmulas y usamos el comando "Aplicar Nombres" en el grupo "Nombres Definidos-Asignar Nombre"

menú Aplicar Nombres


seleccionamos los nombres a asignar (en este caso ambos)

seleccionar nombres a aplicar


y apretamos Aceptar

resultado de aplicar nombres en fórmulas


Las referencias son reemplazadas por los nombres definidos correspondientes.

martes, enero 07, 2014

Cursos Excel Avanzado y Macros en Enero

Todo año nuevo es una oportunidad para avanzar y cumplir metas. Y si tu meta es avanzar y mejorar en Excel, esta es tu oportunidad: los cursos de Excel Avanzado y Macros de Excelforo.

Estos cursos están diseñados para ayudarte a convertirte en un profesional de Excel, contribuyendo a tu desarrollo profesional y laboral.

Mediante el uso de plataformas educativas punteras, los cursos de Excel y cursos de programación en Visual Basic para Excel (VBA-Macros) se desarrollan en la modalidad e-learning (online).Con las posibilidades que brinda una plataforma educativa de e-learning, se establece una relación entre alumnos y profesor, generándose un ambiente de enseñanza-aprendizaje, que contribuye a combatir algunos de los inconvenientes de la enseñanza a distancia tradicional.


La inscripción a estos cursos se cierra el próximo 10 de Enero!

Visita esta página para más detalles e inscripción.

lunes, enero 06, 2014

Extraer una muestra aleatoria de datos de una lista en Excel

En una nota anterior mostré una técnica para extraer muestras aleatorias de listas en Excel. Esta técnica incluía el uso de las funciones ALEATORIO.ENTRE, INDICE, CONTARA y una columna auxiliar con la función CONTAR.SI.

Deambulando por la Internet me topé con esta técnica sugerida por Bob Umlas que usa Filtro Avanzado y la función ALEATORIO.

Como ya hemos visto Filtro Avanzado acepta el uso de fórmulas en el área de criterios, lo que le da una gran flexibilidad.

La idea en la técnica de Umlas es usar la fórmula "=ALEATORIO()<x" como criterio, donde "x" es un número mayor que 0 y menor que 1.

Por ejemplo, si queremos extraer una muestra que represente el 10% de la lista usamos "=ALEATORIO()<0.1"

En este ejemplo tenemos una lista de 100 nombres y queremos extraer una muestra aleatoria de 10



Esta técnica tiene un inconveniente: no siempre el resultado será el número esperado. En el ejemplo arriba se puede apreciar que hay 12 nombres en la muestra. Si aplicamos varias veces el filtro veremos que el tamaño de la muestra puede ser mayor o menor que 10.

Para solucionar este problema podemos repetir la acción hasta que la muestra extraída tenga el tamaño deseado. Para automatizar el proceso usamos una macro simple. Grabamos con el grabador de macros las acciones y la macro resultante la asociamos a un botón



Para ahorrarnos el trabajo de contar cuantos nombres hay en la muestra podemos agregar una celda de control con la función CONTARA()


miércoles, enero 01, 2014

Comparar listas con Excel y Access

Una tarea frecuente es comparar listas con Excel, ya sea para detectar valores duplicados o valores faltantes en una u otra lista.

Hay varias técnicas posibles al usar Excel para este tipo de tareas. Muchas de ellas las he mostrado en distintas notas en este blog (pueden leerse haciendo un clic a la etiqueta "Comparar Listas" en la nube de etiquetas).

Las técnicas más usuales incluyen usar Formato Condicional, fórmulas (con COINCIDIR, CONTAR.SI, etc.), e inclusive la poco valorada funcionalidad Datos-Consolidar). Existen también complementos (Add-ins)

El problema con estos métodos es que son poco prácticos, en particular si tenemos que comparar listas con centenas o miles de registros.

Podemos comparar listas de miles de registros con facilidad, seguridad e inclusive obtener los resultados en hojas de Excel con unos pocos clics. Todo lo que necesitamos es una herramienta presente en casi todo computador (o red) que tenga instalado el paquete de Office: Access.

Si, sin saber Access! Vamos a demostrarlo con un ejemplo. Supongamos dos listas, Lista A y Lista B, que contienen nombres de países y su PIB. Cada lista se encuentra en una hoja de un cuaderno Excel.

cuadernos con listas de países


Nos piden crear los siguientes reportes:

1 – países en la Lista A que no se encuentran en Lista B;
2 – países en Lista B que no se encuentran en Lista A.

Para dificultar las cosas las listas no están ordenadas.


Primer paso: preparamos una base de datos en Access (si, no hace falta saber Access!, tengan confianza)
Abrimos Access y creamos la base de datos

nueva base de datos en Access


cambiamos el nombre por defecto y elegimos la carpeta



Al terminar el proceso, veremos esto en la pantalla:



Access a creado una base de datos con una tabla vacía. Esta tabla no nos hace falta; al cerrarla Access la borrará.

Segundo paso: insertar las tablas de datos en la base de datos.

Para esta tarea accionamos la pestaña "Datos Externos" en la cinta de opciones (como ven, muy parecido a Excel) y en Importar y Vincular elegimos Excel



Al hacerlo se abre un diálogo que nos guiará en el proceso de importar los datos de las tablas de Excel a la base de datos de Access



Al apretar Aceptar se abre el asistente para importación de hojas de cálculo



Elegimos la hoja Lista A (luego repetiremos el proceso para Lista B) y apretamos "Siguiente"



Si no está marcado, señalamos la opción "Primera fila contiene encabezados...".

En el próximo paso podemos definir el tipo de dato que debe contener cada campo (columna). Para nuestra tarea no nos detendremos en esto y apretamos Siguiente.


En el paso siguiente podemos definir una clave principal para la tabla; tampoco esto es importante a los efectos de nuestra tarea y podemos sencillamente señalar la opción "Sin clave principal"



En el último paso podemos dar nombre a la tabla (por defecto Access usará el nombre de la hoja)



y al apretar Finalizar, Access creará la tabla.



El icono de la tabla aparece en la ventana de objetos (a la derecha). Un doble clic al icono abre la tabla.

Repetimos el proceso para la segunda tabla; al final de proceso tendremos una base de datos con ambas tablas



Tercer paso: crear las consultas.

Access tiene un asistente de para consultas que nos permite crear una consulta para encontrar los elementos faltantes en cada tabla en relación a la otra. Y si, nuevamente no necesitamos saber Access para hacerlo, sólo seguir las instrucciones del asistente.

En la cinta de opciones seleccionamos "Crear" y "Consultas—Asistente para consultas"


En el asistente elegimos la opción "Búsqueda de no coincidentes"



y apretamos Continuar

En los siguientes pasos seleccionamos qué tabla vamos a comparar con cual





En el próximo paso debemos señalar el campo común a ambas tablas (en nuestro caso País). Por lo general Access "adivina" cuál es el campo y todo lo que tenemos que hacer es apretar el botón con el icono <=>



El último paso es definir que campos queremos ver en la consulta, lo que hacemos señalando el campo y apretando el icono ">" (el icono ">>" selecciona todos los campos de una vez).



Apretamos Finalizar y "abracadabra"!!



Repetimos el proceso para comparas Lista B con A



Cuarto paso (opcional): exportar las consultas a hojas de Excel.

En este caso podemos bastarnos con ver los resultados en la ventana de la consulta. Pero en ciertos casos podemos querer exportar los resultados a hojas de Excel para posterior análisis o presentación. También aquí Access nos facilita la vida con el asistente de exportación de datos en la pestaña Datos Externos



Activamos la ventana de la consulta a exportar y definimos en el asistente la carpeta de destino, el formato de Excel, si queremos exportar la consulta con su formato y diseño (recomendado) y si abrir el archivo Excel al terminar el proceso (recomendado).



Todo lo que queda por hacer es apretar Aceptar.