Extraer palabra según indice
- Jaime Franco Jimenez
- 11 ene 2024
- 2 Min. de lectura
Tenemos una serie de sentencias, y, un índice para cada sentencia.
Debemos de extraer la palabra que hay después del índice, aunque puede pasar que el índice no sea un blanco, sino un carácter, esa palabra la ignoramos.
En la celda C2, usamos LET, creamos una variable, seleccionamos el rango A2:A10, creamos otra variable, y, seleccionamos el rango B2:B10.
=LET(z;A2:A10;y;B2:B10
Creamos otra variable, usamos la funcion LARGO como argumento texto, ponemos la variable “z”, vamos a obtener la longitud de cada sentencia.
=LET(z;A2:A10;y;B2:B10;a;LARGO(z);a)
Creamos otra variable, usamos la funcion EXTRAE, como argumento texto, ponemos la variable “z”, como argumento posición inicial, ponemos la variable “y”, como argumento numero de caracteres, ponemos la variable “a”, vamos a obtener cada sentencia a partir del índice.
=LET(z;A2:A10;y;B2:B10;a;LARGO(z);b;EXTRAE(z;y;a);b)
Creamos otra variable, usamos la funcion ENCONTRAR, como argumento texto buscado, ponemos un espacio, como argumento dentro del texto, ponemos la variable “b”.
=LET(z;A2:A10;y;B2:B10;a;LARGO(z);b;EXTRAE(z;y;a);c;ENCONTRAR(" ";b);c)
Obtenemos donde se encuentra el espacio después de haber extraído los caracteres después del índice.
Vemos que en la ultima sentencia tenemos un error, este error, es debido a que no encuentre un espacio.
Creamos otra variable, usamos la funcion IZQUIERDA, como argumento texto, ponemos la variable “b”, como argumento numero de caracteres, ponemos la variable “c” y restamos 1, para excluir el espacio.
=LET(z;A2:A10;y;B2:B10;a;LARGO(z);b;EXTRAE(z;y;a);c;ENCONTRAR(" ";b);d;IZQUIERDA(b;c-1);d)
Aparentemente, ya lo tenemos.
Si nos fijamos en la cuarta palabra, tenemos la letra “e”, y, en la palabra 8, tenemos “id”.
Veamos de donde salen estos valores.
Vamos a la sentencia 4, Cooking a homemade meal can be both rewarding and relaxing, vamos a extraer desde el índice, una posición, la expresión queda como sigue:
=EXTRAE(A5;B5;1)
Nos devuelve la letra “e”, quiere decir que el índice 30 para dicha sentencia corresponde con una palabra, por lo que debemos de excluirla.
Lo mismo pasa para la sentencia 8.
Volvemos a la expresión principal.
Creamos otra variable, usamos la funcion EXTRAE, como argumento texto, ponemos la variable “z”, como argumento posición inicial, ponemos la variable “y” y restamos 1, para obtener un carácter menos que el índice, como argumento número de caracteres, ponemos 1.
=LET(z;A2:A10;y;B2:B10;a;LARGO(z);b;EXTRAE(z;y;a);c;ENCONTRAR(" ";b);d;IZQUIERDA(b;c-1);e;EXTRAE(z;y-1;1);e)
Tenemos un carácter menos al índice, donde vemos que en las dos sentencias que hemos visto anteriormente, aparece una letra, la cual debemos de excluirla, para ello, creamos otra variable, usamos el condicional SI, como argumento prueba lógica, preguntamos si la variable “e” es igual a un espacio, como argumento valor si verdadero, ponemos la variable “d”, como argumento valor si falso, ponemos blanco.
=LET(z;A2:A10;y;B2:B10;a;LARGO(z);b;EXTRAE(z;y;a);c;ENCONTRAR(" ";b);d;IZQUIERDA(b;c-1);e;EXTRAE(z;y-1;1);f;SI(e=" ";d;"");f)
Vemos que donde había una letra, aparece blanco, y, donde era blanco, aparece la palabra, excepto, en la ultima frase, que seguimos teniendo el error.
Antes del condicional SI, usamos la funcion SI.ERROR, como argumento valor es el condicional SI, como argumento valor si error, ponemos la variable “b”.
=LET(z;A2:A10;y;B2:B10;a;LARGO(z);b;EXTRAE(z;y;a);c;ENCONTRAR(" ";b);d;IZQUIERDA(b;c-1);e;EXTRAE(z;y-1;1);f;SI.ERROR(SI(e=" ";d;"");b);f)
Aceptamos, y, ahora si lo tenemos.
Miguel Angel Franco
Comments