Tenemos los siguientes datos:
Debemos de dividir cada cadena, y, colocarla en la posición que le corresponda en el rango C2:H2.
El modelo debe de quedar como sigue:
Empecemos…
En la celda C3, usamos LET, creamos una variable, usamos la función DIVIDIRTEXTO, como argumento texto, ponemos la celda A3, omitimos el argumento delimitador de columna, como argumento delimitador de fila, entre comillas dobles, ponemos coma y dejamos un espacio, porque después de la coma hay un espacio.
Probamos variable.
=LET(b;DIVIDIRTEXTO(A3;;", ");b)
Tenemos una matriz desbordada en vertical con cada carácter de la celda A3.
Como argumento calculo de LET, usamos la función BUSCARX, como argumento valor buscado, seleccionamos el rango C2:H2, como argumento matriz de búsqueda, ponemos la variable “b”, como argumento matriz devuelta, ponemos, de nuevo, la variable “b”.
=LET(b;DIVIDIRTEXTO(A3;;", ");BUSCARX(C2:H2;b;b;""))
Tenemos cada letra de la cadena A3 donde hay coincidencia, y, blanco donde no hay coincidencia.
Fijamos C2:H2.
Si arrastramos, vemos como cada letra se coloca en su posición.
Pero, vamos a hacerlo de forma matricial, para no tener que arrastrar.
Después del signo igual, ponemos la función REDUCE, como argumento valor inicial, ponemos blanco, como argumento array, seleccionamos el rango A3:A9, como argumento función, ponemos LAMBDA, y, declaramos dos variables.
=REDUCE("";A3:A9;LAMBDA(x;y
Como argumento calculo de LAMBDA, usamos la función APILARV, como argumento matriz1, ponemos la variable “x”, como argumento matriz2, es la función LET, pero, cambiamos A3 por la variable “y”, para que trabaje con cada fila, cerramos paréntesis.
=REDUCE("";A3:A9;LAMBDA(x;y;APILARV(x;LET(b;DIVIDIRTEXTO(y;;", ");BUSCARX(C2:H2;b;b;"")))))
Aceptamos, y, ya tenemos separada cada carácter de cada cadena colocada en su posición, pero, con errores donde no hay coincidencia.
Usamos la función SI.ERROR, para quitar el error, y, ponemos blanco.
=SI.ERROR(REDUCE("";A3:A9;LAMBDA(x;y;APILARV(x;LET(b;DIVIDIRTEXTO(y;;", ");BUSCARX(C2:H2;b;b;"")))));"")
La primera fila está de más, que es el valor de la variable “x”, pues, después del signo igual, usamos la función EXCLUIR, como argumento matriz, es la función REDUCE, como argumento filas, ponemos 1, omitimos el argumento columnas.
=EXCLUIR(SI.ERROR(REDUCE("";A3:A9;LAMBDA(x;y;APILARV(x;LET(b;DIVIDIRTEXTO(y;;", ");BUSCARX(C2:H2;b;b;"")))));"");1)
Aceptamos, y, ya lo tenemos.
Miguel Angel Franco
Comments