
Mi compañero quería poner los números de catálogo en una columna y las descripciones de los productos en otra.
Como pueden ver el problema consiste en que el número de catálogo es la última palabra en la celda y el número de palabras por celda es variable. Esto hace que no podamos emplear Datos—Texto en Columnas.
La solución consiste en hacer algunas manipulaciones con funciones de Texto. Las funciones que usaremos en este caso son: DERECHA, ENCONTRAR, SUSTITUIR y LARGO.
Nuestro objetivo es construir una fórmula DERECHA(A1, número de caracteres). El problema es establecer el número de caracteres para cada celda.
El primer paso consiste en identificar el separador de las palabras; en nuestro caso es el espacio (que en fórmulas de Excel representamos " "). El número de caracteres será el número total de caracteres en la celda menos el número de caracteres hasta la última palabra, es decir hasta el último espacio.
Tomemos el texto de la celda A1

Usamos la formula SUSTITUIR(A1," ","") que da como resultado
DARKBLUENIPPLEWITHOUTTRAY022052801
Sencillamente hemos eliminado los espacios reemplazando " " por "".
Este resultado lo usamos como argumento en la función LARGO
LARGO(SUSTITUIR(A1," ","")) que da como resultado 34
Ahora usamos la fórmula
SUSTITUIR(A1," ","*",LARGO(A1)-LARGO(SUSTITUIR(A1," ","")))
Que da como resultado
DARK BLUE NIPPLE WITHOUT TRAY*022052801
Es decir, hemos puesto un asterisco * entre la anteúltima y la última palabra.
El truco consiste en que LARGO(A1) calcula el total de caracteres en la celda incluyendo los espacios en blanco (39); la fórmula LARGO(SUSTITUIR(A1," ","")) hace el cálculo sin los espacios en blanco (34). La diferencia (5) es la posición del último espacio.
Ahora podemos encontrar la posición de * usando
ENCONTRAR("*",SUSTITUIR(A1," ","*",LARGO(A1)-LARGO(SUSTITUIR(A1," ",""))))
Que da como resultado 30
Ahora sabemos que el largo del texto es 39, y que nuestro separador de la última palabra se encuentra en la posición 30. Por lo tanto el largo de la última palabra es 9.
Así que usamos la fórmula
DERECHA(A1,LARGO(A1)-ENCONTRAR("*",SUSTITUIR(A1," ","*",LARGO(A1)-LARGO(SUSTITUIR(A1," ","")))))
Que nos da el resultado esperado.
Esta solución fue propuesta por Ken Wright y mencionada por David McRitchie
Para separar la descripción usamos la función IZQUIERDA de esta manera
=IZQUIERDA(A1,LARGO(A1)-LARGO(B1))
cuando en B1 hemos puesto la fórmula que nos da el número de catálogo.
Technorati Tags: MS Excel