Tenemos el siguiente modelo.
Queremos poner los centros en filas, junto con las ventas de cada producto, quiere decir, que debe de aparecer en filas cinco veces cada centro, junto al total de cada producto.
Estoy usando la versión de Excel en inglés.
Tenemos seis centros comerciales, y, cinco productos.
Si en una celda escribo la siguiente función TOCOL, y, como argumento selecciono los datos, o, pongo el nombre de la tabla.
=TOCOL(Datos)
Obtengo una matriz desbordada con el nombre del centro, y, los totales para dicho centro.
Pero, no es lo que quiero, quiero que antes de cada total por producto, aparezca el nombre del centro comercial.
Bien, voy a usar la función DROP, donde como argumento array, selecciono la tabla datos.
=DROP(Datos
Omito el argumento filas, y, como argumento columnas pongo 1, es decir, que excluya la primera columna.
Cerramos paréntesis, y, aceptamos.
=DROP(Datos;;1)
Obtenemos una matriz desbordada con los totales para cada producto.
Como he dicho anteriormente, tenemos seis filas, y, cinco columnas, si multiplico seis por cinco, me devuelve 30 filas, quiere decir que si traspongo la matriz desbordada, obtendré 30 filas.
Hacerlo de forma matricial, es porque cuando añadamos datos, o, eliminemos datos, se actualizarán de forma automática.
Seguimos, con la función CONTARA (COUNTA), voy a contar las filas de la columna centro.
=COUNTA(Datos[Centros])
Devuelve 6 filas.
De nuevo con la función CONTARA (COUNTA), en este caso, voy a contar los encabezados, pero resto 1, para excluir el encabezado de centro.
=COUNTA(Datos[#Headers])-1
Devuelve 5 columnas.
Voy a multiplicar ambos encabezados, y, devuelve 30.
=(COUNTA(Datos[#Headers])-1)*COUNTA(Datos[Centros])
Es decir, debemos de rellenar 30 filas, pero, estas 30 filas, deben de ir numeradas, es decir, como tenemos cinco productos, debe de aparecer cinco veces cada centro comercial en vertical, por lo que si divido 30 entre 6 centros comerciales, obtendré las veces que tiene que aparecer cada centro comercial.
Si ahora divido 6 entre 30, obtendré cada paso de debe de dar.
Ahora, voy a usar la función SECUENCIA (SEQUENCE), donde como argumento filas es 30.
=SEQUENCE(B10*C10
Omito el argumento columnas, e, inicio.
Como argumento paso, pongo 0,2.
Cerramos paréntesis, y, aceptamos.
=SEQUENCE(B10*C10;;;F10)
Obtenemos una matriz desbordada empezando desde 1, aumentando 0,2, hasta llegar a 30.
Voy a usar la función REDONDEAR.MENOR (ROUNDDOWN), como argumento número es la expresión anterior, y, como argumento numero de decimales, ponemos cero, esta función redondea un numero hacia abajo.
=ROUNDDOWN(SEQUENCE(B10*D10;;;F10);0)
Vemos como ahora aparece cinco veces el numero 1, cinco el número 2, así con los demás números.
Ahora, voy a usar la función INDICE (INDEX) de forma matricial, donde como argumento matriz, son los centros comerciales, como argumento numero de fila, es la expresión anterior, y, omito el argumento número de columna, por defecto, pondrá una columna.
=INDEX(Datos[Centros];ROUNDDOWN(SEQUENCE(B10*D10;;;F10);0))
Obtenemos una matriz desbordada pero vemos que se repite cada centro cinco veces.
Ahora, debemos de añadir los totales de cada producto a cada centro, lo hare en una celda aparte.
Antes, hemos usado la función DROP, donde hemos excluido la primera fila, pues esta función, la vamos a englobar en la función TOCOL.
=TOCOL(DROP(Datos;;1))
Obtenemos una matriz desbordada, con los totales de cada producto.
Pues, ahora, con la función HSTACK, voy a unir ambas cadenas.
=HSTACK(INDEX(Datos[Centros];ROUNDDOWN(SEQUENCE(B10*D10;;;F10);0));TOCOL(DROP(Datos;;1)))
Pues, ya tenemos nuestra matriz desbordada con cada centro, y, el total de cada producto para cada centro.
Añadimos una nueva regla de formato condicional, y, le ponemos bordes, pero, primero seleccionamos el rango.
Comments