top of page

TOCOL y TOROW

Si tenemos una matriz de dos o mas columnas, ahora, con las funciones matriciales nuevas como TOCOL o TOROW, podemos convertirla en una matriz de una sola columna, donde se almacenan todos los datos.


Sintaxis

=TOCOL(matriz, [ignorar], [scan_by_column])


· Matriz, es un argumento obligatorio, es la matriz que se va a devolver como una columna.

· Ignorar, es un argumento opcional, por si queremos omitir determinados tipos de valores. De forma predeterminada, no se omite ningún valor. Podemos especificar una de las acciones siguientes:


0 Conservar todos los valores (predeterminado).

1 Omitir espacios en blanco.

2 Ignorar errores.

3 Omitir espacios en blanco y errores.


· Scan_by_column, argumento opcional, digitaliza la matriz por columna. De forma predeterminada, la matriz se analiza por fila.


TOCOL en español es ENCOL, y, TOROW es ENFILA.


Voy a usar las funciones en español.


Por ejemplo, vamos a convertir el siguiente rango, en un rango de una sola columna.









En una celda, escribimos el signo igual, seguido del nombre de la función y abrimos un paréntesis.


=ENCOL(


Punto y coma, el primer rango es matriz, pues, señalamos las dos columnas de la matriz o, rango, y, aceptamos.


=ENCOL(B2:C6)


Obtenemos una matriz de una sola columna donde vemos el nombre de la provincia, seguido de la cantidad, como matriz desbordada que es, no se copian los formatos.













Y si queremos unir en una sola columna los siguientes rangos, donde hay una columna de separación.










Pues, vamos a hacerlo, señalamos los dos rangos, incluido la columna de separación, ponemos ENCOL, y, seleccionamos desde B2:F6, cerramos paréntesis.


=ENCOL(B2:F6)


Obtenemos una matriz desbordada de una sola columna donde vemos que se ha incorporado una celda en blanco entre provincia y cantidad, que aparece como cero.






















Decir que solo apareen ceros en el primer rango, podemos ver que aparece la provincia de Sevilla, la cantidad, un cero, después, aparece Granada, la cantidad, y, ningún cero, porque en la función le hemos indicado que la cantidad del segundo rango es el final.


Pero, queremos unir los dos rangos, quitando la columna de separación.


Anteriormente, hemos visto la función APILARV, que nos une varias matrices o rangos.


Pues vamos a usarla para unir ambos rangos.


=APILARV (B2:C6; E2:F6)


Ya tenemos los dos rangos unidos.












Ahora, vamos a crear esa matriz desbordada de una cola columna que almacene todos los datos.


Pues, después del signo igual, usamos ENCOL.


=ENCOL(APILARV (B2:C6; E2:F6))


Y ya la tenemos.


El siguiente argumento es ignorar, donde podemos:








En el ejemplo anterior, hemos visto que teníamos una columna de separación, y, hemos usado la función APILARV para saltar dicha columna, pues, vamos a usar de nuevo la función ENCOL, pero vamos a usar el argumento ignorar, y, le decimos que ignore celdas en blanco.


=ENCOL(B2:F6;1)


Obtenemos el mismo resultado que el anterior.


Tiene un último argumento, que es escanear por columna, el valor predeterminado, es el resultado que vemos, es decir, por filas, donde aparece cada provincia, junto con su valor, pues, vamos a usar analizar por columnas, y, usamos el valor VERDADERO, es decir, analizar por columnas.







=ENCOL(B2:F6;1; VERDADERO)


Vemos que aparecen primero las provincias del primer rango, después, sus valores, las provincias del segundo rango, y, después, sus valores.














Ya somos nosotros los que decidimos como queremos verlo.


Me voy a quedar en el argumento escanear por columna por fila, lo que queremos es saber el total, es decir, la suma de las cantidades, pero vemos que hay texto y numero, tenemos una función llamada ESNUMERO, que nos devuelve VERDADERO si el valor es número, y, FALSO si no lo es, pues, ponemos ENCOL, como argumento matriz, seleccionamos el rango B2:F6, como argumento ignorar, ignoras celdas en blanco.


Pues, vamos a usarla.


=ESNUMERO (ENCOL(B2:F6;1))


Obtenemos una matriz desbordada con VERDADERO donde es número, y, FALSO donde no lo es.




















Ahora, usamos el condicional SI para preguntar que, si es número la matriz desbordada anterior, que ejecute la función ENCOL, en caso contrario, que me devuelva un espacio en blanco.


=SI(ESNUMERO(ENCOL(B2:F6;1)); ENCOL(B2:F6;1);"")


Vemos solo números y espacios en blanco, pues, ahora, usamos la función SUMA para saber el total.


=SUMA(SI(ESNUMERO(ENCOL(B2:F6;1)); ENCOL(B2:F6;1);""))


Y ya tenemos el total de todas las provincias.





Pero, podemos ver que usamos dos veces la función ENCOL, y, podemos usar LET, donde creamos una variable, y, almacenamos ENCOL.


=LET(a;ENCOL(B2:F6;1);SUMA(SI(ESNUMERO(a);a;"")))



La función ENFILA es igual que ENCOL, la diferencia es que los resultados aparecen en filas.


Por ejemplo, con la siguiente expresión, obtenemos la primera matriz en horizontal.


=ENFILA(B2:C6)


Ahora, vamos a hacer un ejemplo con la función ENCOL, y, ENFILA.


Trabajamos con el modelo de ventas de productos en diferentes centros comerciales, y, provinciales.









El modelo esta en formato de tabla, y, se llama Tabla1.


Queremos crear un cuadro donde en vertical aparezcan los años, en horizontal, los centros comerciales, y, debajo los totales por año y centro comercial.


Lo primero que vamos a hacer es obtener los años únicos, para ello, usamos UNICOS, como argumento matriz, usamos AÑO aplicado a la columna fecha, cerramos paréntesis.


Para ello, ponemos la función ENCOL y señalamos el rango de fechas.


=UNICOS(ENCOL(AÑO(Tabla1[Fecha])))


Ya tenemos los años únicos.









Ahora, vamos por los centros comerciales, que los vamos a poner en horizontal, para ello, usamos ENFILA, como argumento matriz, ponemos UNICOS, y, como argumento de UNICOS, ponemos la columna fecha cerramos paréntesis.


=ENFILA(UNICOS(Tabla1[Centro]))


Aceptamos, y, ya tenemos los centros únicos.








Ahora, vamos a calcular los totales por año y centro comercial, vamos a poner cada condición entre paréntesis, la primera condición es que el año de la columna fecha sea igual al valor de la celda I2, que es el primer año.


=(AÑO(Tabla1[Fecha])=I2)


Ponemos le símbolo de asterisco, que es igual que el operador lógico Y, devuelve VERDADERO si todas las condiciones se cumplen, abrimos otro paréntesis, la siguiente condición es que el centro sea igual al valor de la celda J1, cerramos paréntesis.


=(AÑO(Tabla1[Fecha])=I2)*(Tabla1[Centro]=J1)


Volvemos a poner el símbolo de asterisco, abrimos otro paréntesis, ponemos la columna total, y, cerramos paréntesis.


=(AÑO(Tabla1[Fecha])=I2)*(Tabla1[Centro]=J1)*(Tabla1[Total])


Lo que tenemos en los últimos paréntesis, no es una condición, quiere decir, que, si se cumplen las dos condiciones anteriores, que nos devuelva la columna de total, para obtener el total, después del signo igual, ponemos SUMA.


=SUMA((AÑO(Tabla1[Fecha])=I2)*(Tabla1[Centro]=J1)*(Tabla1[Total]))


Ya tenemos el total para el primer año y centro comercial.






Fijamos la columna de I2, y, la fila de J1, para que al arrastrar no se actualicen.


=SUMA((AÑO(Tabla1[Fecha])=$I2)*(Tabla1[Centro]=J$1)*(Tabla1[Total]))


Seleccionamos la celda con la expresión, pulsamos CTRL mas C para copiar, pulsamos Escape, seleccionamos el rango donde vamos a pegar, y, ya tenemos los totales para cada año y centro comercial.








Miguel Angel Franco

 
 
 

Comments


© 2019 Miguel Ángel Franco García

bottom of page