Separar una cadena de texto con Macro

Saludos Expertos
Eh estado buscando y tratando de hacer una macro que me tome una cadena de texto de longitud variable que contiene varios elementos separado por un "; " (con todo y el espacio), entonces lo que necesito es tomar el texto después del espacio copiarlo hasta antes del punto y coma, y pegarlo en una columna, y así sucesivamente hasta haber extraído todo el contenido de la celda, (el punto y coma con el espacio no los quiero copiar) generando así una lista de valores (uno por celda)
Ejemplo de contenido de la celda:            ;R12; R401; R403; R437; R438; R439; R441
Ojala me puedan ayudar por que ya eh navegado por varios lados y no consigo algo que me ayude a hacer exactamente lo que necesito, también para si pueden más o menos comentar el código o explciarme las instrucciones para poder manipularlas en un futuro y aprender! Jajaja; de antemano muchas Gracias!
1

1 Respuesta

305.650 pts. * Bachiller en Ingeniería Industrial
Comprendo tu caso. Y bien puedo ayudarte por otro medio que no necesariamente es la programación en VBA.
Estoy ahora justo trabajando en tu caso. Lo estoy probando y funciona.
No te preocupes que dentro de breves momentos te doy la respuesta por este mismo medio.
Christian
Bueno empecemos con tu caso. La verdad el camino que te voy a indicar es un resultado posible. No descarto la posibilidad que con una macro también pueda ser factible la solución. Pero bueno, empecemos.
1.- En la celda A1 de Hoja1 digita el valor el cual nos comentas en el post el cual es:
     ;R12; R401; R403; R4037; R4038; R439; R441
2.- Ahora situate en la celda B1 que esta a la derecha de A1 y ahí digita la siguiente fórmula (o copia y pega para evitar errores en la digitación)
=SUSTITUIR(SUSTITUIR(ESPACIOS(A1);"; ";"");";";"")
[Fijate en tu separador de argumentos que puede ser punto y coma o coma. Yo he empleado punto y coma ";"]
El resultado en B1 debe ser:
R12R401R403R437R438R439R441
Bien te explicare paso por paso por separado.
En la celda C5 situate y escribe la siguiente fórmula:
=ESPACIOS(A1)
Esta fórmula lo que hace es quitar los espacios en blanco que estén demás. En A1 existen como 4 espacios en blanco, luego sigue el punto y coma, y luego sigue el R12
Ahorasituate en la celda C6 y escribe la siguiente fórmula:
=SUSTITUIR(C5;"; ";"")
Vamos a sustituir dentro de la cadena los dos caracteres punto y coma y espacio "; "en blanco por "nada" es decir ""
El resultado hasta esta etapa es:
;R12R401....y sigue la cadena
**
Vemos que se nos ha escapado el primer punto y coma. Por ello nuevamente recurrimos a la función Sustituir()
Ahora en la celda C7 escribe la siguiente fórmula:
=SUSTITUIR(C6;";";"")
Vamos a reemplazar o sustituir el punto y coma que este dentro de la cadena por nada ""
Hemos hecho los pasos y te he descrito cada uno de ellos. De paso has aprendido.
Simplemente en vez de hacer 3 fórmulas lo he hecho en una sola que esta en la celda B1.
***
Espero haberte ayudado. Me comentad como te fue.
Muchas gracias por tu respuesta. De hecho no entendía bien el uso de estas fórmulas pero ya les estony entendiendo y más eso de combinar 3 en una sola, pero lo que falta o más bien lo que necesitaría ahora es dejar de: ;R12; R401; R403; R4037; R4038; R439; R441 en una columna pero cada elemento en una celda
R12
R401
.
.
.
R441
Y ASÍ SUCESIVAMENTE Se que puedo delimitar el texto por los ";" y me los separa por celda en una misma fila pero cuando intento usar el código "TextToColumns" en Vba no consigo hacerlo funcionar, ¿quería ver si exite alguna otra alternativa o que puedo hacer? Muchas, muchas gracias por tu ayuda
Bueno apelando a tu primera consulta pude contestarte al parecer sin problemas. Pero no es bueno sinceramente plantear una pregunta encima de otra. Pero bueno de todos modos pasare a darte una idea de como hacerlo.
LO que me comentas es bueno sobre la delimitación. He grabado una macro y veo que el código se genera de tal operación.
Lo que puedo aconsejarte es que primero delimites mediante ";" y una vez este las celdas separadas horizontalmente, lo segundo seria copiar todos esos valores y copiarlos y pegarlo de manera especial y darle la opción de Transponer. Y finalmente, como has copiado quiere decir que las celdas que están horizontales con los datos delimitados aun siguen. Lo ultimo seria que la macro grabe y que puedas tu suprimir esos valores y quedarte finalmente con la columna con los datos delimitados.
***
Espero haberte orientado en tu caso.
No olvides de finalizar y puntuar al final de esta página, el cual es muy importante.
Muchas gracias por tu ayuda, fue de utilidad tu respuesta y me ayudo, pero siempre fue la misma duda la que tuve, creo que no me explique bien, pero aun así muchas gracias por tu tiempo y conocimiento.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas