sábado, marzo 11, 2006

Funciones SI (IF) en Excel – Como construir fórmulas anidadas compactas

Una tarea bastante corriente en Excel es construir fórmulas que combinan varias funciones. Una de las combinaciones "clásicas" es con la función SI (IF en la versión inglesa).
La función SI analiza una propuesta (Jorge mide más de 1.80 metros) y de acuerdo al resultado (verdadero o falso) da una respuesta (Jorge es alto). Si la propuesta resulta "falsa" el resultado será distinto (Jorge es bajo).
Por supuesto se pueden combinar (anidar) varias funciones SI, de manera que cada una sirva de argumento para la otra. Excel acepta hasta 7 funciones SI en una misma fórmula. El problema es que también con 3 o 4 funciones SI combinadas, la fórmula resulta larga y complicada. Sobre esto he escrito en la entrada sobre el
uso de la función ELEGIR (Choose, en inglés).
En este ejemplo (les recomiendo
descargar el archivo del ejercicio) veremos cómo construir fórmulas que anidan varias funciones SI, en forma compacta.
Para esto es necesario conocer el concepto de "nombres" (NAMES) en Excel. Si no están familiarizados con este concepto, pueden leer mis entradas sobre el tema:
Uso de Nombres (NAMES) en MS Excel
Usar Nombres en Excel para Formato Condicional
Uso de NOMBRES (NAMES) en Excel – Validación de Datos

En nuestro ejemplo suponemos la existencia de una tienda que tiene un club de clientes. Cada cliente puede pertenecer a una de las categorías: Platinum, Gold o Regular. De acuerdo a la categoría el miembro puede recibir determinados descuentos e acuerdo a esta tabla:


Además la tienda vende con el sistema "1+1", al comprar dos productos se recibe un descuento del 50% sobre el más barato.
Este ejercicio fue parte de un examen en un curso sobre Excel. Los alumnos tenían que proponer una fórmula que calculara el descuento adicional a los clientes.


Las fórmulas propuestas por los alumnos variaron entre 4 y 5 funciones SI combinadas. Si bajaron el archivo, pueden ver en la columna G la fórmula con 5 funciones SI

=SI(C2="Platinum",SI(Y(CONTAR(D2:E2)=2,F2>10000),F2*0.2,SI(Y(CONTAR(D2:E2)=2,F2<=10000),F2*0.1,SI(Y(CONTAR(D2:E2)=1,F2>10000),F2*0.1))),SI(Y(C2="Gold",CONTAR(D2:E2)=2,F2>15000),F2*0.1," "))

Si bien esta fórmula resuelve el problema, se puede escribir de otra manera usando solamente 2 funciones SI. La regla a seguir dice que la cantidad de funciones SI a combinar equivale a la cantidad de casos menos 1. Si bien hay cinco casos de descuento, como podemos ver en la tabla arriba, que de hecho hay tres casos: los que reciben 20% de descuento adicional; los que reciben 10% y los que no reciben descuento adicional.

Para construir la fórmula, primero defineremos los nombres que contengan las fórmulas para determinar el tipo de descuento.
Para esto escribimos las fórmulas en celdas laterales, lo que nos permitirá verificar su funcionamiento.


Fíjense en las fórmulas en el rango J2:M7. Los nombres y sus fórmulas son:
P_2_10 --- =Y(C2="Platinum",CONTARA(D2:E2)=2,F2>10000)
P_2 -------- =Y(C2="Platinum",CONTARA(D2:E2)=2)
P_10 ------- =Y(C2="Platinum",F2>10000)
G_2_15 --- =Y(C3="Gold",CONTARA(D3:E3)=2,F3>15000)

La función CONTARA nos permite contar la cantidad de productos comprados en cada compra. Usamos esta función y no CONTAR para evitara resultados erróneos cuando una de las celdas del rango está en blanco.
Los nombres los definimos usando el menú Insertar---Nombre---Definir

La forma más práctica de construir los nombres, es copiando las fórmulas de la barra de fórmulas y pegándolas en la ventanilla "Se refiere a" del diálogo Definir Nombre.
MUY IMPORTANTE: al construir los nombres la celda activa debe ser la primer celda en el rango relevante, en nuestro caso H2. Esto se debe a que en nuestras fórmulas usamos direcciones relativas (sin los símbolos $).

Dado que las condiciones P_2, P_10 y G_2_15 dan como resultado el mismo descuento (10%), las combinaremos en una sola condición usando la función O (OR en su versión inglesa).
Finalmente podemos escribir nuestra fórmula de la siguiente manera:

=SI(P_2_10,F2*0.2,(SI(O(P_2,P_10,G_2_15),F2*0.1,"")))

Como pueden ver (en la columna H), no sólo la fórmula es mucho más compacta, si no que el uso de nombres la convierte en explícita.


Categorías: Funciones&Formulas_, Manejo de Datos_


Technorati Tags: , ,

lunes, marzo 06, 2006

Manejo de pequeñas bases de datos en Excel – Referencias dinámicas con nombres (NAMES).

En la entrada de ayer sobre tablas dinámicas vimos que cada vez que agregamos datos a la base de datos, debemos actualizar la referencia al rango. De no hacer esto, las nuevas líneas de datos no aparecerán en la tabla dinámica.
En el ejemplo de ayer hicimos esto manualmente. Excel nos permite construir referencias dinámicas, que se actualizan con los cambios en el tamaño de la base de datos. La técnica para hacer esto es utilizar "nombres" (NAMES).
Si no estás familiarizado con este tema, puedes ver mi nota sobre
uso de nombres en Excel.
Como ya explicamos, los nombres pueden referirse no sólo a rangos sino también a fórmulas. Para crear el rango dinámico en nuestro caso definiremos un nombre que contendrá la formula DESREF (Offset en la versión inglesa). El archivo de este ejemplo se puede
pivotsp3descargar aquí.
La sintaxis de esta fórmula es la siguiente; DESREF(referencia ;filas;columnas;alto;ancho) donde:

referencia: la celda en el ángulo superior derecho de la lista (en nuestro caso será A1);
filas: para nuestro uso será siempre 0
columnas: para nuestro uso será siempre 0
alto: la cantidad de filas en nuestra lista
ancho: la cantidad de columnas en nuestra lista.


Para convertir esta fórmula en dinámica, usaremos la función CONTARA para determinar los valores de los parámetros alto y ancho. Esta es nuestra fórmula:

=DESREF(Hoja1!$A$1,0,0,CONTARA(Hoja1!$A:$A),CONTARA(Hoja1!$1:$1))


como se puede ver comenzamos en la celda A1, contamos cuantos valores hay en la columna A (que representan la cantidad de líneas de la tabla) y también contamos la cantidad de valores en la línea 1 (que representan la cantidad de columnas en la lista).

Ahora sólo nos queda reemplazar la referencia al rango de datos en la lista por el nombre que acabamos de definir. Los pasos a seguir son:
1 – activamos la Hoja2 y ubicamos el mouse en alguna de las celdas de la tabla dinámica
2 – abrimos el menú Tabla Dinámica--->Asistente



3 – pulsamos el botón "atrás"; en el diálogo que se abre reemplzamos el rango



con el nombre (la forma más práctica es pulsar F3)





A partir de este momento, la referencia de la tabla dinámica se adaptará automáticamente de acuerdo a la cantidad de líneas que agreguemos, o que borremos, a la base de datos.


Categorías: Funciones&Formulas_, Manejo de Datos_


Technorati Tags: ,

domingo, marzo 05, 2006

Manejo de pequeñas bases de datos en Excel con tablas dinámicas (pivot tables) - Actualización de Datos

Ayer dimos una breve explicación sobre las tablas dinámicas (pivot tables) en la primera nota sobre manejo de pequeñas bases datos en Excel.
Vimos que a partir de una lista que cumpla ciertas condiciones mínimas, Excel puede construir tablas dinámicas con las cuales podemos realizar análisis de datos en forma eficiente y sorprendentemente rápida.
La lista debe tener encabezamientos en su primer fila, de tal manera que Excel los pueda reconocer como tales. Aquí se puede pivotsp1descargar el archivo con el ejemplo de lista para construir tabla dinámica.

Los elementos de la tabla dinámica son campos, que podemos ordenar como filas o columnas, y datos.
Otros elementos que debemos conocer:
1 – la barra de herramientas de las tablas dinámicas





En esta nota sólo nos referiremos icono "actualizar datos" (el signo de exclamación "!"). Por definición las tablas dinámicas no se actualizan con los cambios en la base de datos. Para actualizar la tabla debemos pulsar el icono "!".

2 – Al apretar el botón derecho del mouse, cuando el cursor se encuentra en la zona de la tabla dinámica, se abre un menú.



Aquí nos referiremos sólo al menú "configuración de campo". Para nuestro ejemplo veremos cómo usar las opciones de "Resumir por…" y el botón "Número".



"Resumir por…" determina el tipo de operación que utilizará Excel: suma, cuenta, promedio, etc. Importante saber: la primera opción de Excel es usar la operación suma. Si alguno de los datos no es reconocido por Excel como número, la función utilizada será cuenta. Esto también es cierto si hay alguna celda en blanco en el campo de los datos.

"Número" permite formar las celdas con los mismos formatos de del menú Formato de celdas.

A esta altura ya estamos en condiciones de generar tablas dinámicas a partir de listas en hojas de Excel.

En la próxima entrada veremos como usar referencias dinámicas. Por qué es importante esto? Si agregamos datos a nuestra lista, digamos otro año de ventas, y actualizamos la tabla dinámica, veremos que los datos nuevos no aparecen en la tabla.
Esto se debe a que no hemos actualizado la referencia al rango en la definición de la tabla dinámica.
Si descargan este archivo con el pivotsp2ejemplo de tabla dinámica, verán que he agregado las ventas del año 2003. Sin embargo, también después de pulsar el icono de actualización los datos no aparecen en la tabla dinámica.
Para que esto suceda debemos hacer lo siguiente:

1 – Pulsar el botón "Tabla dinámica" en la barra.



2 – En el diálogo que se abre, pulsar la opción "asistente"
3 - En el nuevo diálogo apretar el botón "atrás"

4 – Corregir el rango para incluir toda la lista


5 – Al apretar "Finalizar", los nuevos datos serán incluidos en la tabla dinámica




En lugar de actualizar la referencia manualmente, podemos utilizar referencias dinámicas, técnica que veremos en la próxima entrada.

Categorías: Manejo de Datos_


Technorati Tags: ,