Ya hemos hablado en varios post de estas magníficas fórmulas y funciones desbordadas. Sin duda una experiencia en Excel ;-)
Hoy combinaremos y aplciaremos este comportamiento desbordado sobre unas funciones clásicas: la función SI y SUMAR.SI.CONJUNTO.
Nuestra meta es lograr incorporar unos Totales generales por filas y columnas a una tabla de referencia cruzada de forma automática...
Partimos de una tabla 'TblDatos' en nuestra hoja de cálculo con campos: Año, País, Uds. A partir de dicha tabla queremos resumir o agrupar por Año y País las Uds vendidas, añadiendo además los Totales Generales por filas o columnas.
Comenzaremos incorporando los encabezados de la tabla resumen... para lo cual haremos uso de las funciones desbordadas UNICOS y ORDENAR.
Así en la celda I3 introducimos la siguiente fórmula:
=TRANSPONER(ORDENAR(UNICOS(TblDatos[Año])))
donde obtenemos los elementos únicos del campo 'Año', ordenados en Ascendente, y cuya matriz resultante transponemos de vertical a horizontal.
De forma similar obtenemos los encabezados para los países en la celda H4:
=ORDENAR(UNICOS(TblDatos[País]))
donde conseguimos en una matriz vertical los elementos únicos del campo 'País' ordenada en sentido Ascendente.
Finalmente, apoyándonos en estos rangos desbordados anteriores, construiremos nuestro resumen de uds vendidas por Año y País.
Entonces en I4 insertamos la fórmula buscada:
=SI.ERROR( SI(SECUENCIA(CONTARA(UNICOS(TblDatos[País]))+1;1)>CONTARA(UNICOS(TblDatos[País])); SUMAR.SI.CONJUNTO(TblDatos[Uds];TblDatos[Año];I3#); SI(SECUENCIA(1;CONTARA(TRANSPONER(UNICOS(TblDatos[Año])))+1)>CONTARA(TRANSPONER(UNICOS(TblDatos[Año]))); SUMAR.SI.CONJUNTO(TblDatos[Uds];TblDatos[País];H4#); SUMAR.SI.CONJUNTO(TblDatos[Uds];TblDatos[Año];I3#;TblDatos[País];H4#))); SUMA(TblDatos[Uds]))
Una fórmula algo larga, sin duda, pero sencilla de comprender... pero con una gran ventaja, y es que no necesita de ningún refresco ni actualización (como una tabla dinámica o una consulta de Power Query) para mostrar siempre los datos reales.
La explicamos.
Tenemos un primer uso de la función SI con una prueba lógica:
SI(SECUENCIA(CONTARA(UNICOS(TblDatos[País]))+1;1)>CONTARA(UNICOS(TblDatos[País]));
donde generamos una lista de números 1,2,3,.. hasta llegar al número que sobrepase el número de elementos únicos del campo 'País'; en nuestro ejemplo 1,2,3,4,5,6.
Comparando con el número de elementos únicos de 'País'.
Vemos la idea en la siguiente imagen
Esta prueba lógica nos dice, entonces, en qué fila nos encontramos... y si estuvieramos en la última fila (en nuestro ejemplo, la 6) aplicaría la opción de 'si_verdadero'
SUMAR.SI.CONJUNTO(TblDatos[Uds];TblDatos[Año];I3#)
esto es, la suma acumulada para cada 'Año'.
De manera semejante aplicamos en nuestra fórmula un segundo condicional:
SI(SECUENCIA(1;CONTARA(TRANSPONER(UNICOS(TblDatos[Año])))+1)>CONTARA(TRANSPONER(UNICOS(TblDatos[Año])));
donde comparamos una lista de números 1,2,3,4,5,6,7 con el número total de elementos únicos del campo 'Año'
Identificando columna a columna si aplicamos un parcial o el Total General en la columna 7...
Del segundo condicional la opción de 'si_verdadero' que aplica cuando llegamos a esa columna 7 es:
SUMAR.SI.CONJUNTO(TblDatos[Uds];TblDatos[País];H4#)
esto es, la suma acumulada para cada 'País'.
La última opción de nuestras condiciones nos sitúa en los casos existentes de Año-País, con un SUMAR.SI.CONJUNTO basado en dos criterios (obviamente Año y País):
SUMAR.SI.CONJUNTO(TblDatos[Uds];TblDatos[Año];I3#;TblDatos[País];H4#)
La fórmula acaba, o empieza según se mire, con un SI.ERROR para corregir el fallo que aparecería en el Total Absoluto (fila 6 y columna 7 de nuestro ejemplo), donde decimos que nos devuelva la suma de todas las unidades:
SUMA(TblDatos[Uds]).
En la primera imagen, a modo de comprobación veíamos una tabla dinámica donde por supuesto de forma más sencilla llegamos al mismo resultado... LLegando al conflicto de dos partes: uso tablas dinámicas - uso fórmulas desbordadas.
Comentaré ventajas e inconvenientes de ambas:
1- uso de tabla dinámica: mínimo esfuerzo en su construcción versus posibilidad de olvidar refrescar los datos y trabajar con información obsoleta no actualizada.
2- uso de fórmulas desbordadas: mayor trabajo en su elaboración versus datos constantemente actualizados.
Hoy combinaremos y aplciaremos este comportamiento desbordado sobre unas funciones clásicas: la función SI y SUMAR.SI.CONJUNTO.
Nuestra meta es lograr incorporar unos Totales generales por filas y columnas a una tabla de referencia cruzada de forma automática...
Partimos de una tabla 'TblDatos' en nuestra hoja de cálculo con campos: Año, País, Uds. A partir de dicha tabla queremos resumir o agrupar por Año y País las Uds vendidas, añadiendo además los Totales Generales por filas o columnas.
Comenzaremos incorporando los encabezados de la tabla resumen... para lo cual haremos uso de las funciones desbordadas UNICOS y ORDENAR.
Así en la celda I3 introducimos la siguiente fórmula:
=TRANSPONER(ORDENAR(UNICOS(TblDatos[Año])))
donde obtenemos los elementos únicos del campo 'Año', ordenados en Ascendente, y cuya matriz resultante transponemos de vertical a horizontal.
De forma similar obtenemos los encabezados para los países en la celda H4:
=ORDENAR(UNICOS(TblDatos[País]))
donde conseguimos en una matriz vertical los elementos únicos del campo 'País' ordenada en sentido Ascendente.
Finalmente, apoyándonos en estos rangos desbordados anteriores, construiremos nuestro resumen de uds vendidas por Año y País.
Entonces en I4 insertamos la fórmula buscada:
=SI.ERROR( SI(SECUENCIA(CONTARA(UNICOS(TblDatos[País]))+1;1)>CONTARA(UNICOS(TblDatos[País])); SUMAR.SI.CONJUNTO(TblDatos[Uds];TblDatos[Año];I3#); SI(SECUENCIA(1;CONTARA(TRANSPONER(UNICOS(TblDatos[Año])))+1)>CONTARA(TRANSPONER(UNICOS(TblDatos[Año]))); SUMAR.SI.CONJUNTO(TblDatos[Uds];TblDatos[País];H4#); SUMAR.SI.CONJUNTO(TblDatos[Uds];TblDatos[Año];I3#;TblDatos[País];H4#))); SUMA(TblDatos[Uds]))
Una fórmula algo larga, sin duda, pero sencilla de comprender... pero con una gran ventaja, y es que no necesita de ningún refresco ni actualización (como una tabla dinámica o una consulta de Power Query) para mostrar siempre los datos reales.
La explicamos.
Tenemos un primer uso de la función SI con una prueba lógica:
SI(SECUENCIA(CONTARA(UNICOS(TblDatos[País]))+1;1)>CONTARA(UNICOS(TblDatos[País]));
donde generamos una lista de números 1,2,3,.. hasta llegar al número que sobrepase el número de elementos únicos del campo 'País'; en nuestro ejemplo 1,2,3,4,5,6.
Comparando con el número de elementos únicos de 'País'.
Vemos la idea en la siguiente imagen
Esta prueba lógica nos dice, entonces, en qué fila nos encontramos... y si estuvieramos en la última fila (en nuestro ejemplo, la 6) aplicaría la opción de 'si_verdadero'
SUMAR.SI.CONJUNTO(TblDatos[Uds];TblDatos[Año];I3#)
esto es, la suma acumulada para cada 'Año'.
De manera semejante aplicamos en nuestra fórmula un segundo condicional:
SI(SECUENCIA(1;CONTARA(TRANSPONER(UNICOS(TblDatos[Año])))+1)>CONTARA(TRANSPONER(UNICOS(TblDatos[Año])));
donde comparamos una lista de números 1,2,3,4,5,6,7 con el número total de elementos únicos del campo 'Año'
Identificando columna a columna si aplicamos un parcial o el Total General en la columna 7...
Del segundo condicional la opción de 'si_verdadero' que aplica cuando llegamos a esa columna 7 es:
SUMAR.SI.CONJUNTO(TblDatos[Uds];TblDatos[País];H4#)
esto es, la suma acumulada para cada 'País'.
La última opción de nuestras condiciones nos sitúa en los casos existentes de Año-País, con un SUMAR.SI.CONJUNTO basado en dos criterios (obviamente Año y País):
SUMAR.SI.CONJUNTO(TblDatos[Uds];TblDatos[Año];I3#;TblDatos[País];H4#)
La fórmula acaba, o empieza según se mire, con un SI.ERROR para corregir el fallo que aparecería en el Total Absoluto (fila 6 y columna 7 de nuestro ejemplo), donde decimos que nos devuelva la suma de todas las unidades:
SUMA(TblDatos[Uds]).
En la primera imagen, a modo de comprobación veíamos una tabla dinámica donde por supuesto de forma más sencilla llegamos al mismo resultado... LLegando al conflicto de dos partes: uso tablas dinámicas - uso fórmulas desbordadas.
Comentaré ventajas e inconvenientes de ambas:
1- uso de tabla dinámica: mínimo esfuerzo en su construcción versus posibilidad de olvidar refrescar los datos y trabajar con información obsoleta no actualizada.
2- uso de fórmulas desbordadas: mayor trabajo en su elaboración versus datos constantemente actualizados.
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.