Macro para buscar distintos textos en celdas
Necesitaría saber como hacer una macro que pueda dar solución al siguiente problema:
1- Tengo una lista enorme de textos como el siguiente: " ai21200 074-ajblister-marca1". Por ejemplo:
Marca3-ai1504 06-ajset de 6 piezas-
Ai21200 074-ajblister-marca1
Marca3-ai404 3-ajunidad-
Marca2-ai3335-ajjuego x tres piezas-
Ai21100 375-marca2ajjgo. 3 unidades-
Sin marca-ai8-ajcajas-
Ai1504-ajblisterx12unidades-marca3
Marca1-ai3335-ajvx3pzs.-
Ai3335-ajjgo.x 3 pzs.-Marca2
2- Este texto no es uniforme, pero en algún punto lleva el valor que estoy buscando (por ejemplo "marca1"). Quiero que junto a cada celda del listo, me devuelva los valores que me interesan, por ejemplo:
Marca3-ai1504 06-ajset de 6 piezas-…... Marca3
ai21200 074-ajblister-marca1………………….……. Marca1
marca3-ai404 3-ajunidad- ……………………………. Marca3
(La línea punteada la puse para indicar que son celdas separadas)
Ya intenté usando la función Si y HALLAR, de la siguiente forma: +SI(HALLAR($AP$5;AH1769;1);$AP$5;""), donde $AP$5 sería "marca1" y AH1769 sería "ai21200 074-ajblister-marca1" pero surgió el inconveniente de que el listado de los valores que estoy buscando es demasiado largo ("marca1"; "marca2"; "sin marca"; y un largo etcétera), quedándome en consecuencia una fórmula muy larga, dado que esa condición la tenía que poner por cada valor que me interesa buscar –añadiendo nuevas condiciones con el &-. Cuando me di por vencido cada fórmula ocupaba una carilla de Word con letra 11. Supongo que una fórmula tan extensa, multiplicada por las miles de líneas de observaciones que tengo va a acabar ocupando demasiada memoria y haciendo muy lento el archivo, y, lo que es peor, que me va a obligar a retocar la fórmula cada vez que incorporo un valor (ejemplo "marca 78"), ya que el listado de valores que me interesan se actualiza constantemente y con varios valores por vez.
Para decirlo de otro modo, necesitaría una fórmula que busque en cada línea si ésta tiene alguna palabra que coincida con una lista de palabras (marcas) que tengo, y que me devuelva ese valor. Sería muy bueno, que en vez de tener que usar SI y HALLAR por cada marca que tenga, que pueda seleccionar la lista de marcas entera y que me busque en cada celda qué valores de la lista de marcas coincide, y me las devuelva en una celda al lado de cada línea.
En fin, hace muy poco estoy aprendiendo a usar Visual Basic, de modo que si alguien me asistiera con el problema me sería de gran ayuda.
Muchas Gracias
1- Tengo una lista enorme de textos como el siguiente: " ai21200 074-ajblister-marca1". Por ejemplo:
Marca3-ai1504 06-ajset de 6 piezas-
Ai21200 074-ajblister-marca1
Marca3-ai404 3-ajunidad-
Marca2-ai3335-ajjuego x tres piezas-
Ai21100 375-marca2ajjgo. 3 unidades-
Sin marca-ai8-ajcajas-
Ai1504-ajblisterx12unidades-marca3
Marca1-ai3335-ajvx3pzs.-
Ai3335-ajjgo.x 3 pzs.-Marca2
2- Este texto no es uniforme, pero en algún punto lleva el valor que estoy buscando (por ejemplo "marca1"). Quiero que junto a cada celda del listo, me devuelva los valores que me interesan, por ejemplo:
Marca3-ai1504 06-ajset de 6 piezas-…... Marca3
ai21200 074-ajblister-marca1………………….……. Marca1
marca3-ai404 3-ajunidad- ……………………………. Marca3
(La línea punteada la puse para indicar que son celdas separadas)
Ya intenté usando la función Si y HALLAR, de la siguiente forma: +SI(HALLAR($AP$5;AH1769;1);$AP$5;""), donde $AP$5 sería "marca1" y AH1769 sería "ai21200 074-ajblister-marca1" pero surgió el inconveniente de que el listado de los valores que estoy buscando es demasiado largo ("marca1"; "marca2"; "sin marca"; y un largo etcétera), quedándome en consecuencia una fórmula muy larga, dado que esa condición la tenía que poner por cada valor que me interesa buscar –añadiendo nuevas condiciones con el &-. Cuando me di por vencido cada fórmula ocupaba una carilla de Word con letra 11. Supongo que una fórmula tan extensa, multiplicada por las miles de líneas de observaciones que tengo va a acabar ocupando demasiada memoria y haciendo muy lento el archivo, y, lo que es peor, que me va a obligar a retocar la fórmula cada vez que incorporo un valor (ejemplo "marca 78"), ya que el listado de valores que me interesan se actualiza constantemente y con varios valores por vez.
Para decirlo de otro modo, necesitaría una fórmula que busque en cada línea si ésta tiene alguna palabra que coincida con una lista de palabras (marcas) que tengo, y que me devuelva ese valor. Sería muy bueno, que en vez de tener que usar SI y HALLAR por cada marca que tenga, que pueda seleccionar la lista de marcas entera y que me busque en cada celda qué valores de la lista de marcas coincide, y me las devuelva en una celda al lado de cada línea.
En fin, hace muy poco estoy aprendiendo a usar Visual Basic, de modo que si alguien me asistiera con el problema me sería de gran ayuda.
Muchas Gracias
{"Lat":-37.3352243593064,"Lng":-59.117431640625}
1 Respuesta
Respuesta de jrgces
2
Excelente, muchas gracias por el aporte, me ayudará mucho. - JORGE AMEZQUITA
Gracias por el comentario. Saludos_ - jrgces