Encontrar palabras que se repiten
- Jaime Franco Jimenez

- 9 sept 2023
- 2 Min. de lectura
Debemos de encontrar aquellas palabras que al revés significan lo mismo, tenemos el siguiente modelo.

Empecemos…
En la celda B2, usamos LET, creamos una variable, la llamaremos segunda_frase, vamos a extraer cada palabra contando desde el final, para ello, vamos a usar la función EXTRAE, como argumento texto, seleccionamos la celda A2, como argumento numero de caracteres, usamos la función SECUENCIA, omitimos el argumento filas, como argumento columnas, usamos LARGO como argumento de LARGO, seleccionamos la celda A2, como argumento inicio, volvemos a usar LARGO, para que empiece a extraer desde el final, como argumento paso, ponemos -1.
Como argumento numero de caracteres de EXTRAE, ponemos 1.
=LET(segunda_frase;EXTRAE(A2;SECUENCIA(;LARGO(A2);LARGO(A2);-1);1);segunda_frase)
Obtenemos una matriz desbordada en horizontal con cada carácter, pero, al revés.

Podemos ver que hay cadenas cuyo delimitador es la coma.

Pues, vamos a sustituir la coma por el espacio, para que todos los delimitadores sean espacio, para ello, usamos la función SUSTITUIR, como argumento texto, es la expresión anterior, como argumento texto antiguo, entre comillas dobles, ponemos coma, como argumento texto nuevo, ponemos un espacio.
=LET(segunda_frase;SUSTITUIR(EXTRAE(A2;SECUENCIA(;LARGO(A2);LARGO(A2);-1);1);",";""); segunda_frase)
Usamos la función UNIRCADENA, como argumento delimitador, ponemos dobles comillas dobles, ignoramos celdas vacías, como argumento texto1, es la expresión anterior.
=LET(segunda_frase;UNIRCADENAS("";VERDADERO;SUSTITUIR(EXTRAE(A2;SECUENCIA(;LARGO(A2);LARGO(A2);-1);1);",";""));segunda_frase)

Usamos DIVIDIRTEXTO, como argumento texto, es la expresión anterior, como argumento delimitador de columna, ponemos un espacio.
=LET(segunda_frase;DIVIDIRTEXTO(UNIRCADENAS("";VERDADERO;SUSTITUIR(EXTRAE(A2;SECUENCIA(;LARGO(A2);LARGO(A2);-1);1);",";""));" "); segunda_frase)
Tenemos cada palabra en una celda.

Debemos de comparar cada palabra de la celda A2 con cada palabra obtenida, quiere decir, que debemos de separar cada palabra de la celda A2, para ello, creamos otra variable, la llamaremos primera_frase, para ello, volvemos a usar la función DIVIDIRTEXTO, como argumento texto, seleccionamos la celda A2, como argumento delimitador de columna, ponemos un espacio.
=LET(a;DIVIDIRTEXTO(UNIRCADENAS("";VERDADERO;SUSTITUIR(EXTRAE(A2;SECUENCIA(;LARGO(A2);LARGO(A2);-1);1);",";""));" ");primera_frase;DIVIDIRTEXTO(A2;" ");primera_frase)
Creamos otra variable, la llamaremos reult, usamos la función COINCIDIR, como argumento valor buscado, ponemos segunda_frase, como argumento matriz buscada, ponemos primera_frase, como argumento tipo de coincidencia, seleccionamos exacta.
=LET(segunda_frase;DIVIDIRTEXTO(UNIRCADENAS("";VERDADERO;SUSTITUIR(EXTRAE(A2;SECUENCIA(;LARGO(A2);LARGO(A2);-1);1);",";""));" ");primera_frase;DIVIDIRTEXTO(A2;" ");resul;COINCIDIR(segunda_frase;primera_frase;0);resul)
Obtenemos una matriz desbordada con hay coincidencia, y, error donde no la hay.

Usamos la función ENFILA, para obtener los mismos resultados, pero, sin errores, como argumento matriz, es la función COINCIDIR, como argumento ignorar, ponemos 3, es decir, ignoramos errores y blancos.
=LET(segunda_frase;DIVIDIRTEXTO(UNIRCADENAS("";VERDADERO;SUSTITUIR(EXTRAE(A2;SECUENCIA(;LARGO(A2);LARGO(A2);-1);1);",";""));" ");primera_frase;DIVIDIRTEXTO(A2;" ");resul;ENFILA(COINCIDIR(segunda_frase;primera_frase;0);3);resul)

Ya tenemos el numero de columna a recuperar de segunda_frase, usamos INDICE, como argumento matriz, ponemos la variable primera_frase, ignoramos el argumento numero de fila, como argumento numero de columna, es la función ENFILA.
=LET(segunda_frase;DIVIDIRTEXTO(UNIRCADENAS("";VERDADERO;SUSTITUIR(EXTRAE(A2;SECUENCIA(;LARGO(A2);LARGO(A2);-1);1);",";""));" ");primera_frase;DIVIDIRTEXTO(A2;" ");resul;INDICE(primera_frase;;ENFILA(COINCIDIR(segunda_frase;primera_frase;0);3));resul)
Obtenemos las palabras que al revés es lo mismo.

Pero, vemos que aparece la letra “a”, realmente, no nos interesa dicha letra, vamos a usar al argumento calculo de LET, ponemos el condicional SI como argumento prueba lógica, preguntamos si la longitud de la variable resul es mayor a 1, como argumento valor si verdadero, que nos devuelva la variable resul, como argumento valor si falso, ponemos un espacio en blanco.
=LET(segunda_frase;DIVIDIRTEXTO(UNIRCADENAS("";VERDADERO;SUSTITUIR(EXTRAE(A2;SECUENCIA(;LARGO(A2);LARGO(A2);-1);1);",";""));" ");primera_frase;DIVIDIRTEXTO(A2;" ");resul;INDICE(primera_frase;;ENFILA(COINCIDIR(segunda_frase;primera_frase;0);3));SI(LARGO(resul)>1;resul;""))

Usamos UNIRCADENAS, como argumento delimitador, entre comillas dobles, ponemos coma, ignoramos celdas vacías, como argumento texto1, es el condicional SI.
=LET(segunda_frase;DIVIDIRTEXTO(UNIRCADENAS("";VERDADERO;SUSTITUIR(EXTRAE(A3;SECUENCIA(;LARGO(A3);LARGO(A3);-1);1);",";""));" ");primera_frase;DIVIDIRTEXTO(A3;" ");resul;INDICE(primera_frase;;ENFILA(COINCIDIR(segunda_frase;primera_frase;0);3));UNIRCADENAS(",";VERDADERO;SI(LARGO(resul)>1;resul;"")))
Arrastramos, y, ya tenemos nuestro ejercicio resuelto.

Miguel Angel Franco




Comentarios