Extraer texto de una celda a partir del primer número

Tengo una lista de productos en una hoja de Excel (família, artículo, precio, código). El nombre del artículo incluye la descripción, el grosor y la dimensión en una sola celda. Necesito separar ese texto quitando la parte inicial y quedándome con el texto a partir del primer número que corresponde al grosor.

He investigado con las funciones EXTRAE, HALLAR, ENCONTRAR, etc.. Pero el problema que no resuelvo es como identificar el carácter numérico dentro de la celda. Una vez localizado se podría extraer todos los caracteres hasta el final de la celda. (Antes del primer número puede haber una, dos o más palabras)

Pongo algunos ejemplos de esas celdas:

Balsa 1 mm - 10x100 cm

Cartón gris 1 mm - 52x75 cm

Cartón microcanal blanco 1 mm - 100x60 cm

4 respuestas

Respuesta
2

Xavier Ferrer,

Tiene mucha razón lo que te indican en el mensaje anterior, para un tema de obtener información más clara y relevante, es conveniente que el dato de cada característica del producto (en tu ejemplo) ya sea color, tamaño, precio, peso, costo, proveedor, etc. este organizada en una tabla con número de columnas igual al número de características de tu producto que deseas analizar.

En todo caso, puede ser que se te presente el mismo inconveniente de separar cadenas de textos según algún criterio (en tu caso es a partir del primer número), entonces puedes utilizar la siguiente fórmula de tipo matricial:

Asumiendo que tu Texto se encuentra en la Celda "A1".

=DERECHA(A1;LARGO(A1)-COINCIDIR(VERDADERO;ESNUMERO(EXTRAE(A1;FILA(INDIRECTO("1:"&LARGO(A1)));1)*1);0)+1)

Espero que te sirva de ayuda y orientación. Cualquier consulta estaré pendiente.

Por favor no olvidar de valorar las respuestas.

Respuesta
1

El problema que tienes es que al incluir en la misma celda caracteres numéricos y texto, excel lo interpreta todo como texto, incluidos los números que son "alfanúmeros".

Creo que es mucho más práctico para todo tipo de operaciones, resúmenes, etc.. que pusieras los distintos datos en distintas columnas, es decir, en una columna el nombre del artículo, en otra columna el grosor y en otra la dimensión y no solo te ahorrarías muchos problemas, sino que podrías obtener resultados mucho más claros.

Sí claro. El problema es que tengo unos 500 artículos que fueron introducidos así y ni siquiera la división automática de texto en columnas me deja las columnas bien divididas por tener distinto número de palabras.
He probado con alguna búsqueda del tipo ("0";"1";"2"; .... hasta 9) pero no me ha funcionado. Creo que la solución puede ir por ahí pero no la pillo.

Gracias de todos modos.

La respuesta de Ander te va a solucionar este caso concreto, pero te conviene separar cada tipo de dato en una columna.

Respuesta
1

¿Siempre separas 1 mm con guión (signo - )?
Una serie de HALLAR que fuera número a número (0,1,2 a 9) sería muy extenso, lo más simple sería hallar el guión y retroceder, pongamos, más de 6 caracteres, pongamos 9, y utilizar EXTRAE para obtener un nuevo texto, ahora puedes utilizar el HALLAR para localizar el primer espacio, casi de seguro siempre será el que está delante del tamaño.

Para que se vea claro lo he puesto en 3 columnas provisionales que utilizaremos para obtener las 3 columnas finales
En A1 tenemos tu texto
B1 es =HALLAR("-";A1) para localizar el guión (si necesitas simplificar puedes incluirlo en la fórmula en C1, E1 y G1
C1 es =EXTRAE(A1;B1-9;8) es el resultado provisional, no hay forma de simplificar esta celda

9 es la supuesta longitud máxima que tendrá un tamaño (1 mm) incluyendo espacios y mm cm km o lo que le pongas, 8 es 9 - 1, suponiendo que antes del guión hay un espacio siempre y como máximo 9999 mm (7 caracteres), para + de 9999 aumenta el 9 a 10,11,12

PD: si hay forma de simplificar esta celda, pero la fórmula sería kilométrica, HALLAR el guión y restar 9 como punto de partida para HALLAR un espacio y restarlo de nuevo a HALLAR el guión para tener la longitud que utilizaremos en el EXTRAE donde de nuevo volveremos a hacer lo mismo de antes, guión, -9, espacio, para obtener el punto de partida y así obtener 1 mm... muy largo

D1 es =HALLAR(" ";C1) localizar el espacio en el texto provisional (si necesitas simplificar puedes incluirlo en la fórmula en E1 y F1

E1 es =IZQUIERDA(A1;B1-9-2+D1) tu primera columna de resultados, el nombre

9 era la columna provisional C1, 2 es para eliminar el espacio delante y detrás

F1 es ==DERECHA(C1;LARGO(C1)-D1) tu segunda columna, el espesor

G1 es =DERECHA(A1;LARGO(A1)-B1-1) tu tercera columna, el tamaño

.
simplificando D1
D1 es el nombre =IZQUIERDA(A1;B1-9-2+HALLAR(" ";C1))

E1 es el espesor =DERECHA(C1;LARGO(C1)-HALLAR(" ";C1))

F1 es el tamaño =DERECHA(A1;LARGO(A1)-B1-1) no cambia

.

simplificando también B1

B1 es la columna provisional =EXTRAE(A1;HALLAR("-";A1)-9;8)

C1 es el nombre =IZQUIERDA(A1;HALLAR("-";A1)-9-2+HALLAR(" ";B1))

D1 es el espesor =DERECHA(B1;LARGO(B1)-HALLAR(" ";B1))

E1 es el tamaño =DERECHA(A1;LARGO(A1)-HALLAR("-";A1)-1)

Respuesta
1

Este es el resultado de la sig. fórmula =+EXTRAE(D2, ENCONTRAR("mm", D2, 1)-2,4) que supongo es lo que buscas.

¡Gracias! No era exactamente esto pero es una pista de como hacerlo y puede servir a otros para casos similares. La verdad es que Ander me dio la respuesta con la fórmula perfecta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas