En este ejemplo, vamos a ver cómo podemos solventar un problema que presenta la función WRAPROWS, esta función coloca los elementos en una matriz bidimensional por fila, el argumento wrap_count, indica los elementos que tiene cada fila, y, el argumento pad_with, en caso de error, pues, ponemos el texto que queremos que aparezca.
Vamos a ver el ejemplo con números.
En la celda B1, voy a poner el número del que estará formada la matriz.
En la celda D2, voy a usar la función SEQUENCE (SECUENCIA), para generar una matriz en vertical, donde solo usare el argumento filas, que será el valor introducido en la celda B1.
=SEQUENCE(B1)
Ahora, usare la función WRAPROWS, donde como argumento vector, es la función SEQUENCE (SECUENCIA).
=WRAPROWS(SEQUENCE(B1)
Como argumento wrap_count, pongo el valor 4.
=WRAPROWS(SEQUENCE(B1);4
Y, como argumento pad_with, pongo un texto en blanco, en caso de error.
Cierro paréntesis y acepto.
=WRAPROWS(SEQUENCE(B1);4;"")
Como he puesto el valor 6 obtengo una matriz desbordada de cuatro columnas, y, dos filas.
Si pongo el número 12, obtengo una matriz desbordada de cuatro columnas, que es el argumento wrap_count de la función WRAPROWS, y, tres filas de alto.
Pero, que ocurre si pongo el valor 2.
Pues, que me devuelve una matriz desbordada de dos filas, y, una sola columna, cuando debería de aparecer en dos columnas, y, una fila, igual que para un número mayor a 4.
Pues, es este el problema que tenemos, y, que debemos de resolver.
Vamos a ir haciéndolo paso a paso.
Tengo que resolver el problema siempre que pongamos un valor igual o menor a cuatro.
Tenemos una función matricial llamada EXPAND (EXPANDIR), que nos permite expandir una matriz, el número de filas y columnas que le indiquemos.
Por ejemplo, si tengo los siguientes números:
Y, aplico la función EXPAND (EXPANDIR), donde como argumento array, selecciono los números, y, utilizo el argumento columnas, donde indico 4 columnas, me devolverá los números, mas una celda, que es un error, porque no hay datos.
Esta función tiene un último argumento que es pad_with, este argumento es para poner un texto si se produce un error, en este caso, voy a poner un texto en blanco.
=EXPAND(K1:M1;;4;"")
Pues esta es la función que voy a usar, para solventar el problema.
Entonces, voy a preguntar por el valor de la celda B1, si es menor o igual a 4.
=IF(B1<=4
En ese caso, tengo que aplicar la función WRAPROWS, pero ¿de cuantos valores?, ya hemos visto que, si pongo un valor igual a menor a 4, me aparece una sola fila, y, no en columnas, es aquí donde entra la función EXPAND (EXPANDIR), entonces, en el argumento valor si verdadero del condicional SI (IF), ponemos la función WRAPROWS y, abrimos un paréntesis.
=IF(B1<=4;WRAPROWS(
Como argumento vector de WRAPROWS, ponemos la función EXPAND (EXPANDIR), donde como argumento array, ponemos la función SEQUENCE (SECUENCIA), como argumento wrap_count, numero de valores por fila, es donde he de preguntar si el valor de B1, es igual a 1, 2, 3, o, 4, cosa que haremos con una constante de matriz, entonces, que ponga el valor 5, en caso contrario, que ponga un texto en blanco, vamos a probar la función en otra celda.
=IF(B1={1;2;3;4};5;"")
En este caso, he puesto en la celda B1, el valor 2, pues, obtengo una matriz desbordada, y, donde es igual a 2, aparece el número 5, el resto aparece en blanco.
Pero me tengo que quedar con el valor y omitir las celdas en blanco, por lo que voy a usar la función CONCAT.
=CONCAT(IF(B1={1;2;3;4};5;""))
Pues esta expresión, es el argumento filas de la función EXPAND (EXPANDIR).
=IF(B1<=4;WRAPROWS(EXPAND(SEQUENCE(B1);CONCAT(IF(B1={1;2;3;4};5;""))
Omito el argumento columnas de la función EXPAND (EXPANDIR).
=IF(B1<=4;WRAPROWS(EXPAND(SEQUENCE(B1);CONCAT(IF(B1={1;2;3;4};5;""));
Como argumento pad_with, pongo un texto en blanco, y, cierro paréntesis.
=IF(B1<=4;WRAPROWS(EXPAND(SEQUENCE(B1);CONCAT(IF(B1={1;2;3;4};5;""));;"")
Pues la expresión EXPAND (EXPANDIR), es el argumento vector de la función WRAPROWS.
Como argumento wrap_count de la función WRAPROWS, pongo el valor 4.
Como argumento pad_with, pongo un texto en blanco.
Cierro paréntesis.
=IF(B1<=4;WRAPROWS(EXPAND(SEQUENCE(B1);CONCAT(IF(B1={1;2;3;4};5;""));;"");4;"")
Y, en el argumento valor si falso del condicional SI(IF), ponemos la función WRAPROWS, pero sin la función EXPAND (EXPANDIR).
=IF(B1<=4;WRAPROWS(EXPAND(SEQUENCE(B1);CONCAT(IF(B1={1;2;3;4};5;""));;"");4;"");WRAPROWS(SEQUENCE(B1);4;""))
Si probamos, veremos que si ponemos un número igual o menor a 4, obtengo una matriz desbordada, he puesto el número 2, de dos columnas y una fila, es decir, está ejecutando el argumento valor si verdadero del condicional SI(IF).
Si pongo el valor 10, obtengo una matriz desbordada de cuatro columnas y tres filas de alto, está ejecutando el argumento valor si falso, del condicional SI(IF).
Pues, ya tenemos resuelto el ejercicio.
Comentarios