domingo, septiembre 08, 2013

Power Pivot potencia lo que ya conoces de Excel - Conócelo

Power Pivot no es algo difícil de aprender

Muchas de las funciones DAX que encuentras en Power Pivot son iguales o similares a las funciones existentes en el Excel tradicional.

No solamente el nombre de las funciones es similar, sino también sus parámetros y la forma en que trabajan.

image
Figura muestra la lista de funciones estadísticas disponibles en DAX
Tomemos por ejemplo la funciones:
Nombre en DAX Nombre en Excel castellano
MAX() MAX()
MIN() MIN()
SUM() SUMA()
AVERAGE() PROMEDIO()
DISTINCTCOUNT() No existe en Excel tradicional

y ahora vamos a utilizar las funciones en el contexto de la siguiente tabla:
Producto Venta
A 13
B 27
C 39
B 23
A 22
A 27
C 32

En realidad, ésta tabla seria mucho mas “grande” en el mundo real y tendría otras columnas que definirían mas cada registro pero con este ejemplo solamente queremos demostrar el concepto de lo sencillo que es crear una medida con las funciones DAX.

Una vez tengamos la tabla de arriba, la importamos a nuestro modelo de datos en Power Pivot utilizando la opción de “Crear tabla vinculada” en la cinta de Power Pivot:

image

y luego vamos a verla en Power Pivot de la siguiente manera:

image

La ventana de Power Pivot es algo nuevo y luce mucho a la hoja de cálculo que tanto conocemos y amamos.

Es un lugar donde se cargan las tablas que vamos a utilizar y cada hoja o tab representa una tabla. El ambiente no es igual al del Excel tradicional tipo R1C1 o A1 donde existen referencias de columnas y filas. El ambiente de Power Pivot es parecido al de una tabla creada en Excel en donde se trabajan con referencias de Columnas y una calculación o fórmula trabaja a lo largo de toda la nueva columna. (como se muestra en la siguiente figura)


image

Sobre todo, tenemos que entender que en Power Pivot no es posible modificar los datos o borrarlos, lo que crea una manera segura de administrar los datos y proteger los mismos y, gracias a todo lo anterior mencionado, las soluciones creadas con Power Pivot son mas robustas a las creadas con el Excel tradicional.
Es algo que Microsoft tuvo que cambiar para poder llegar a un nivel robusto y fue una buena decisión en cuanto a la herramienta. Lo que sí se nos es posible, es crear nuevas columnas calculadas y medidas o campos calculados que es justamente lo que vamos a plantear en el siguiente punto.


Para crear una medida vamos a crear una tabla dinámica:

image

Una vez dentro de la tabla dinámica podemos definir una nueva medida:

image



Una medida o campo calculado es simplemente la nueva manera para crear fórmulas que trabajen utilizando el modelo de datos creado con Power Pivot.

En el Excel tradicional se conocían simplemente como Campos Calculados pero su uso no era/es muy conocido y también tiene algunas limitantes. Microsoft nunca invirtió mucho dinero en esta característica de Excel por lo que luce, se siente y trabaja igual que la versión que existe desde el Excel 2003:


image 
Insertar campo calculado en tabla dinámica tradicional de Excel

Ahora le damos clic al botón de “Nueva medida” para obtener la ventana de configuración de medida (la nueva forma de crear campos calculados con Power pivot):

image

dentro de esta nueva ventana podemos definir una medida simple como se muestra en la figura.
=SUM( Tabla1[Venta] )
donde SUM simplemente necesita 1 argumento el cual necesita ser una columna de tipo de dato numérico.

Pude crear una medida para cada una de las funciones que quería y he obtenido la siguiente tabla dinámica:

image

Nota como el conteo de Productos es una medida que hace un conteo distintivo de la columna “Producto” de la Tabla1 (algo que no es posible de manera nativa en el Excel tradicional).

...y luego, como era de esperarse, tuve la idea de ver dichas agregaciones por Producto, por lo que he agregado el campo de Producto a etiquetas de fila:

image

y funciona correctamente Sonrisa

Te invito a probar Power Pivot y también puedes ver el siguiente video donde explico de principio a fin qué es Power Pivot, Power View y como te podría ayudar en tus análisis y tu vida profesional.



BannerFans.com

jueves, septiembre 05, 2013

Calcular el primer día hábil del mes con Excel

Esta nota viene a colación de una consulta sobre cómo poner en una fila (o columna) de una hoja de Excel todos los días hábiles de un mes.

La idea de mi lector era crear una hoja que al activar la hoja, las fechas hábiles aparezcan en un rango determinado.

Excel cuenta con varias funciones para calcular fechas tomando en cuenta feriados: para calcular fechas, DIA.LAB, DIA.LAB.INTL ; para lapsos, DIAS.LAB, DIAS.LAB.INTL.

Para calcular el primer día hábil del mes combinamos las funciones DIA.LAB y FIN.MES de la siguiente manera



En la celda C2 ponemos el número de mes, en la celda C3 el año; en la celda C5 la fórmula

=DIA.LAB(FIN.MES(FECHA(C3,C2,1),-1),1)

Hace el cálculo de esta manera

FIN.MES calcula el último día del mes de la FECHA, tantos meses atrás o adelante como indique el segundo argumento de la función. En nuestro caso "'-1" indica un mes atrás, es decir 31/08/2013.

DIA.LAB calcula el día laboral antes o después de la fecha indicada, según el segundo argumento de la función. En nuestro caso "1" significa el primer día laboral después del 31/08/2013.

Si queremos poner todos los días hábiles del mes corriente en un rango de la hoja hacemos lo siguiente:




  • En la celda C1 ponemos la función HOY() y le asignamos el nombre definido "fechaActual" (o cualquier otro que les plazca).
  • El mes y el año lo obtenemos en las celdas C2 y C3 con las funciones =MES y =AÑO. A la celda C2 le asignamos el nombre definido "mesActual".
  • En la celda C6 ponemos esta fórmula y la copiamos 30 filas abajo (dado que el número máximo de días de un mes es 31)


=SI(MES(DIA.LAB(FIN.MES(fechaActual,-1),FILA()-5))=mesActual,DIA.LAB(FIN.MES(fechaActual,-1),FILA()-5),"")

La condición de la función SI evalúa si la fecha cae dentro del mes definido ("mesActual"), en caso positivo calcula la fecha del día hábil usando como numerador la expresión FILA()-5 (-5 porque empezamos en la fila 6; en caso de comenzar en otra fila hay que modificar la fórmula).
Si la condición no se cumple, la celda no muestra ningún valor.
Si queremos mostrar las fechas en una fila, usamos como numerador el expresión COLUMNA()-x. Por ejemplo, si la primer fecha aparece en la columna D, la fórmula será

=SI(MES(DIA.LAB(FIN.MES(fechaActual,-1),COLUMNA()-3))=mesActual,DIA.LAB(FIN.MES(fechaActual,-1),COLUMNA()-3),"")

Una acotación para el final: DIA.LAB tiene un tercer argumento opcional que permite usar una rango para señalar los días festivos, además de los fines de semana.

jueves, agosto 29, 2013

Cuando Excel se equivoca al ordenar datos

Hay muchos motivos por los cuales se pueden producir desajustes al ordenar una tabla en Excel. Cuando nos topamos con este problema, nuestra primera reacción es "¡hay un bug en Excel!". Pero los que "hemos fatigado los arduos senderos de Excel por años" (parafraseando al inmortal Borges), sabemos que en casi todos los casos la culpa recae sobre el usuario.

Este artículo de Microsoft contiene una lista de errores que pueden causar desajustes al ordenar datos.

Una vez dicho todo esto, veamos el siguiente caso



En esta tabla, los valores de la columna Porcentaje se obtienen de la tabla en la hoja "clientes", usando la función INDICE combinada con COINCIDIR.



Si observamos la fórmula en la columna "Porcentaje" veremos que Excel incluye la referencia a la hoja "ventas" a pesar de ser esta la hoja activa.



Esto se debe a que al construir la fórmula comenzamos en la hoja activa (Ventas), pasamos a la hoja "clientes" para señalar el rango de la matriz de búsqueda de INDICE y luego volvemos a "Ventas" para completar la fórmula.

Esta referencia a la hoja donde se encuentra la fórmula parece superflua pero inocua. Ahora veamos que pasa al ordenar la tabla por tipo de clientes. Como referencia recordemos que las ventas netas del Cliente 1 son 259,508



Las ventas neto del Cliente 1 ahora son 274,773!



Si nos fijamos en las fórmulas en la tabla ordenada por Tipo, veremos que, a pesar de que las referencias a la columna Tipo son relativas (por ejemplo, ventas!C3 para el Cliente 1), al ordenar la tabla éstas actúan como referencias absolutas.
En la imagen anterior podemos ver que el Cliente 10 se encuentra en la fila 3, pero la formula en la celda E3 se refiere a la celda C12, que era la fila del cliente antes de ordenar la tabla.

Para solucionar o evitar este problema lo que hacemos es eliminar la referencia a la hoja activa ("ventas" en nuestro caso) en las fórmulas. Nuestra fórmula ahora se verá así

=INDICE(clientes!$B$2:$B$4,COINCIDIR(C3,clientes!$A$2:$A$4,0))

Ahora, al ordenar los datos por tipo, no se producirá el desajuste