En el siguiente ejemplo, tenemos dos nombres, uno bien escrito, y, otro no, debemos de poner en una nueva columna, el nombre correcto.

Primero debemos de extraer cada carácter de cada cadena, para ello, uso la función EXTRAE, donde como argumento texto, selecciono la celda A2.
=EXTRAE(A2;
Como argumento posición inicial, voy a usar la función SECUENCIA, donde como argumento numero de filas, uso la función LARGO, y, selecciono la celda A2, lo que me creara una matriz desbordada desde el numero 1 hasta el resultado de LARGO.
=EXTRAE(A2;SECUENCIA(LARGO(A2))
Como argumento número de caracteres de la función EXTRAE ponemos 1, lo que me va a extraer cada carácter de la cadena.
=EXTRAE(A2;SECUENCIA(LARGO(A2));1)
Aceptamos, y, tenemos cada carácter de la cadena.

Para la segunda cadena debemos de realizar lo mismo, pero, voy a comparar una cadena con otra, con el condicional SI, donde pregunto que si cada carácter de la primera cadena es igual a cada carácter de la segunda cadena, que ponga la primera cadena, en caso contrario, que ponga un texto en blanco.
=SI(EXTRAE(A2;SECUENCIA(LARGO(A2));1)=EXTRAE(A3;SECUENCIA(LARGO(A3));1);EXTRAE(A2;SECUENCIA(LARGO(A2));1);"")
Obtenemos una matriz desbordada con los caracteres donde hay coincidencia, y, error donde no la hay.

Ahora, voy a usar la función SI.ERROR, en caso que la expresión anterior, devuelva un error, que ponga el valor -1.
=SI.ERROR(SI(EXTRAE(A2;SECUENCIA(LARGO(A2));1)=EXTRAE(A3;SECUENCIA(LARGO(A3));1);EXTRAE(A2;SECUENCIA(LARGO(A2));1);"");-1)
Lo siguiente va a ser filtrar la expresión anterior, siempre que sea mayor a cero.
=FILTRAR(SI.ERROR(SI(EXTRAE(A2;SECUENCIA(LARGO(A2));1)=EXTRAE(A3;SECUENCIA(LARGO(A3));1);EXTRAE(A2;SECUENCIA(LARGO(A2));1);"");-1);SI.ERROR(SI(EXTRAE(A2;SECUENCIA(LARGO(A2));1)=EXTRAE(A3;SECUENCIA(LARGO(A3));1);EXTRAE(A2;SECUENCIA(LARGO(A2));1);"");-1)>0)
Ya tenemos el nombre corregido.

Como usamos dos veces la misma función, voy a usar la función LET.
=LET(a;SI.ERROR(SI(EXTRAE(A2;SECUENCIA(LARGO(A2));1)=EXTRAE(A3;SECUENCIA(LARGO(A3));1);EXTRAE(A2;SECUENCIA(LARGO(A2));1);"");-1);FILTRAR(a;a>0))
Ya lo tenemos.
Ahora, tenemos que unir todos los caracteres, para ello, uso la función UNIRCADENAS, donde omito el argumento delimitador e ignorar celdas vacías, solo uso el argumento text1, que es la expresión anterior.
=UNIRCADENAS(;;LET(a;SI.ERROR(SI(EXTRAE(A2;SECUENCIA(LARGO(A2));1)=EXTRAE(A3;SECUENCIA(LARGO(A3));1);EXTRAE(A2;SECUENCIA(LARGO(A2));1);"");-1);FILTRAR(a;a>0)))


Comments