martes, febrero 25, 2014

Nuevos cursos Excel - Tablas Dinámicas y Macros

El entorno laboral actual exige conocimientos intermedios y avanzados de Excel. ¿Qué es Excel intermedio y avanzado?

Todo usuario novicio sabe usar fórmulas sencillas como SUMA o SI. El usuario avanzado
  • conoce funciones avanzadas de búsqueda como BUSCARV, INDICE o COINCIDIR; funciones para calcular de acuerdo a varios criterios como SUMAPRODUCTO, SUMA.SI.CONJUNTO y otras; sabe crear nombres que se refieren a rangos y fórmulas y más.
  • Sabe combinar distintas funciones para crear fórmulas eficientes; sabe como auditar y controlar sus fórmulas y conoce las distintas alternativas para cada problema.
  • Sabe crear gráficos para presentar datos y análisis en forma eficiente y clara.
  • Usa tablas dinámicas para analizar bases de datos en Excel o externas en forma eficiente. Las tablas dinámicas nos permiten realizar análisis de grandes masas de datos en cuestión de segundos y con unos pocos clics.
  • Conoce y usa las macros más allá de la simple tarea de grabarlas. Los usuarios avanzados de Excel están familiarizados con Vba (el idioma de programación de Excel) y pueden escribir macros para automatizar su trabajo diario, ahorrando tiempo y dinero.
Todo esto y mucho más puede aprenderse en los excelentes cursos en línea de Excelforo. Para más detalles e inscribirse en los cursos de marzo y abril, haz un clic en el banner



, Tablas Dinámicas y Macros

lunes, febrero 24, 2014

Uso de controles en hojas de Excel - Spin Button con valores negativos

Desde casi los primeros días de este blog he escrito sobre el uso de controles en hojas de cálculos. Los usos son casi ilimitados: dashboards, gráficos dinámicos, listas desplegables, etc.
Excel cuenta con dos colecciones de controles: Formulario y Activex. Ya hemos escrito sobre las ventajas y desventajas de cada una de estas colecciones. En esta nota veremos como sobreponerse a las limitaciónes de los controles Control de Número (Spin Button) y Barra de Desplazamiento (Scroll Bar)
  • aceptan sólo números enteros
  • no aceptan números negativos
En esta nota veremos un rodeo para poder usar números negativos en estos controles.

Por ejemplo, si queremos usar el control de números (spin button) de la colección Formlarios con valores que vayan de -10 a 10, al tratar de definir el valor mínimo veremos lo siguiente

definiciones del Spin Button

Para superar esta limitación, siguiendo con nuestro ejemplo,usamos las siguientes definiciones:

Definiciones del control

Definimos 0 en el valor mínimo y el doble del máximo deseado para el Valor Máximo. En nuestro ejemplo, el valor del control está ligado a la celda A3; en la celda A4 ponemos la fórmula =A3-10. La celda A4 mostrará los valores deseado al accionar el control


Si usamos el control Activex la situación es diferente. Aparentemente Excel acepta el número negativo en la definición del mínimo

Definiciones del control
Pero al tratar de usar el control veremos lo siguiente:

error con numero negativo
al descender de 0, en lugar de -1 Excel poner en la celda ligada 65535!! (suena familiar, no es cierto? 65536 es el número máximo de filas en las versiones anteriores a Excel 2007).

En el caso del control ActiveX, la solución consiste en programar un evento para el objeto. En el menú Desarrollador apretamos el botón Modo de Diseñño, seleccionamos el control y activamos la opción Ver Código

porgramar evento

Al apretar Ver Código, el editor de Vb se abre en el módulo de la hoja; allí ponemos este código

código del control
Con este código el control pasa los números deseados, también los negativos. La ventaja de usar el control ActiveX es que no necesitamos agregar una celda auxiliar.

En la próxima nota veremos como usar estos controles con valores no enteros.

miércoles, febrero 12, 2014

Usos del Power Query - integrar archivos de una carpeta

La nota anterior de la serie terminaba con una (casi existencial) pregunta:
¿qué pasa si tenemos que integrar una cantidad considerables de hojas? ¿Hay alguna manera de automatizar el proceso?
En la nota vimos como integrar datos de tres archivos en una única tabla usando el Power Query; pero si el número de archivos a integrar es considerable, es natural que busquemos una forma menos "pedestre" de hacerlo.

Las buena noticia es que se puede; la mala es que no es trivial. No sólo no es trivial sino que para hacerlo deben cumplirse ciertas condiciones "sine qua non" (por lo menos hasta donde dan mis conocimientos):


  1. los archivos/cuadernos deben estar en la misma carpeta;
  2. las tablas de datos deben tener exactamente la misma estructura (campos y orden);
  3. la hoja con los datos en cada cuaderno debe tener el mismo nombre. 

A partir de aquí esta nota se basa en este post del excelente blog Bacon Bits de Mike Alexander.

Iré mostrando el proceso paso por paso, con explicaciones lo menos técnicas posible donde sea necesario.

En nuestro ejemplo tenemos tres cuadernos Excel datos de ventas de tres sucursales (Norte, Sur y Centro); cada cuaderno contiene una única hoja con el nombre "reporte".

Empezamos por crear una consulta a uno de los cuadernos

Como mostramos en las notas anteriores, seleccionamos la hoja "Reporte" y usamos la opción Edit para abrir la consulta en la ventana del editor de Query


En la ventana del Query usamos la opción "Use first row as headers"


En la imagen arriba podemos apreciar que, similar a lo que conocemos de una hoja de Excel, existe una barra de fórmulas. Despues de convertir la primer fila de la hoja en encabezamiento de la tabla podemos ver que Query a aplicado la función Table.PromoteHeaders

Para combinar, integrar y transformar datos de diversas fuentes Power Query usa un lenguaje de fórmulas informalmente llamado "M". Por el momento no vamos a agregar nada más sobre el tema; sólo recordemos que Power Query usa fórmulas.

Nuestro próximo paso consiste en abrir el editor avanzado del Query (View-Advanced Editor)


Como puede verse, Power Query ha ido creando un código con las operaciones que hemos realizado (algo así como una macro grabada). La idea ahora es buscar la forma de reemplazar la referencia  C:\Ventas\Sucursal Centro.xlsx por una referencia variable.
Para lograr esto vamos a crear una función con dos variable "FilePath" y "FileName" (aclaración: no es obligatorio el uso de inglés para los parámetros o para el nombre de la función).

Modificamos el código en el editor avanzado agregando la función repVentas(FilePath,FilesName), y haciendo los cambiosseñalados en la imagen de abajo


Cerramos el editor avanzado; en el editor del Query le damos un nombre representativo a la funcion


y finalmente apretamos "Apply & Close" con este resultado

Lo que acabamos de hacer es crear una función en "M" que nos permitirá combinar los cuadernos que se encuentren el una misma carpeta (y que cumplas las condiciones que señalamos al principio de esta nota)

En la pestaña del Query, usamos la opción From Folder


Ingresamos el path de la carpeta que contiene los archivos y apretamos Ok. El query abre esta consulta

Abrimos el menú contextual con un clic del botón derecho sobre alguna de las columnas y eligimos la opción Insert Custom Colum; en el diálogo invocamos la función que creamos (funcVentas)

Al apretar Ok, Query agrega una nueva columna "Custom"

Ahora expandemos la columna Custom apretando la doble flecha que aparece en el encabezamiento


Aquí podemos decidir que columnas expandir y cuales no. En nuestro ejemplo expandemos todas. Antes de transferir la consulta a una hoja de Excel, eliminamos las columnas innecesarias y apretamos Apply & Close. Excel abre la tabla en una hoja



¡Misión cumplida! Como dicho, no es trivial, pero excelente herramienta si tenemos que integrar cantidades considerables de archivos.