Urgente: eliminación palabras de una lista... macro?

18/05/2006 - 15:51 por Marta | Informe spam
Buenas tardes!

Tengo un problema de urgente resolución y quería que me comentárais cómo
haríais esto.
Tengo una lista de palabras (65.000) de muchos tipos. Algunas de ellas
incluyen nombres de países o ciudades, y otras no.
Quiero eliminar de ese largo listado todas aquellas palabras que incluyan un
nombre de país o un nombre de ciudad (por ejemplo, si una de las palabras es
hoteles en madrid, que esa palabra desaparezca de mi listado).

Como son tantas palabras y tantas ciudades/países, no puedo hacerlo
manualmente con un filtro.

Se me había ocurrido crear una lista aparte de nombres de ciudades y países,
y hacer algo para que Excel buscara en la lista de 65.000 palabras todas
aquellas que incluyen alguna de las palabras de la lista de ciudades y
países, y que si encuentra alguna que la elimine.

¿Se podría hacer con una macro? ¿cómo sería esta macro? Si no... ¿qué otra
forma se os ocurre?
Esta lista de países tendría unas 50 palabras, más o menos.

Muchas gracias por vuestra rápida ayuda!!!

Marta

Preguntas similare

Leer las respuestas

#1 Miguel Zapico
18/05/2006 - 21:16 | Informe spam
Una posible solucion puede ser:

Sub CheckRange()
Set miRango = ActiveWorkbook.Worksheets(1).Range("A:A")
For Each cell In miRango
If BuscarPalabras(cell.Value) > 0 Then cell.Value = ""
Next
End Sub

Function BuscarPalabras(str1)
Dim regEx
Set regEx = CreateObject("vbscript.regexp")
regEx.Global = True
regEx.Pattern = "Madrid|Roma|Berlin" '< Aqui va la lista de palabras
regEx.IgnoreCase = True
Set myMatches = regEx.Execute(str1)
For Each Match In myMatches
i = i + 1
Next
BuscarPalabras = i
End Function

La macro mirará los datos en la columna A de la hoja 1, y los comprobará
contra la lista de palabras en la función (deben estar separadas por el
simbolo |). Las celdas que contegan alguna de las palabras se eliminarán.
La macro puede tardar un ratito, pero creo que hará lo que necesitas. Por
si acaso, trabaja sobre una copia.

Espero que te sirva,
Miguel.

"Marta" wrote:

Buenas tardes!

Tengo un problema de urgente resolución y quería que me comentárais cómo
haríais esto.
Tengo una lista de palabras (65.000) de muchos tipos. Algunas de ellas
incluyen nombres de países o ciudades, y otras no.
Quiero eliminar de ese largo listado todas aquellas palabras que incluyan un
nombre de país o un nombre de ciudad (por ejemplo, si una de las palabras es
hoteles en madrid, que esa palabra desaparezca de mi listado).

Como son tantas palabras y tantas ciudades/países, no puedo hacerlo
manualmente con un filtro.

Se me había ocurrido crear una lista aparte de nombres de ciudades y países,
y hacer algo para que Excel buscara en la lista de 65.000 palabras todas
aquellas que incluyen alguna de las palabras de la lista de ciudades y
países, y que si encuentra alguna que la elimine.

¿Se podría hacer con una macro? ¿cómo sería esta macro? Si no... ¿qué otra
forma se os ocurre?
Esta lista de países tendría unas 50 palabras, más o menos.

Muchas gracias por vuestra rápida ayuda!!!

Marta
Respuesta Responder a este mensaje
#2 Marta
18/05/2006 - 22:01 | Informe spam
Hola Miguel, muchas gracias,

La idea me gusta, pero encuentro un fallo y querría saber si conoces alguna
solución... la macro funciona, pero si pongo en esa lista por ejemplo "roma",
veo que también me elimina las palabras que la contienen, por ejemplo,
"romano".
Realmente quiero que me elimine la celda si esa celda contiene esa palabra,
pero no si contiene palabras que a su vez contengan esa palabra.

Muchas gracias!

"Miguel Zapico" escribió:

Una posible solucion puede ser:

Sub CheckRange()
Set miRango = ActiveWorkbook.Worksheets(1).Range("A:A")
For Each cell In miRango
If BuscarPalabras(cell.Value) > 0 Then cell.Value = ""
Next
End Sub

Function BuscarPalabras(str1)
Dim regEx
Set regEx = CreateObject("vbscript.regexp")
regEx.Global = True
regEx.Pattern = "Madrid|Roma|Berlin" '< Aqui va la lista de palabras
regEx.IgnoreCase = True
Set myMatches = regEx.Execute(str1)
For Each Match In myMatches
i = i + 1
Next
BuscarPalabras = i
End Function

La macro mirará los datos en la columna A de la hoja 1, y los comprobará
contra la lista de palabras en la función (deben estar separadas por el
simbolo |). Las celdas que contegan alguna de las palabras se eliminarán.
La macro puede tardar un ratito, pero creo que hará lo que necesitas. Por
si acaso, trabaja sobre una copia.

Espero que te sirva,
Miguel.

"Marta" wrote:

> Buenas tardes!
>
> Tengo un problema de urgente resolución y quería que me comentárais cómo
> haríais esto.
> Tengo una lista de palabras (65.000) de muchos tipos. Algunas de ellas
> incluyen nombres de países o ciudades, y otras no.
> Quiero eliminar de ese largo listado todas aquellas palabras que incluyan un
> nombre de país o un nombre de ciudad (por ejemplo, si una de las palabras es
> hoteles en madrid, que esa palabra desaparezca de mi listado).
>
> Como son tantas palabras y tantas ciudades/países, no puedo hacerlo
> manualmente con un filtro.
>
> Se me había ocurrido crear una lista aparte de nombres de ciudades y países,
> y hacer algo para que Excel buscara en la lista de 65.000 palabras todas
> aquellas que incluyen alguna de las palabras de la lista de ciudades y
> países, y que si encuentra alguna que la elimine.
>
> ¿Se podría hacer con una macro? ¿cómo sería esta macro? Si no... ¿qué otra
> forma se os ocurre?
> Esta lista de países tendría unas 50 palabras, más o menos.
>
> Muchas gracias por vuestra rápida ayuda!!!
>
> Marta
Respuesta Responder a este mensaje
#3 Miguel Zapico
18/05/2006 - 22:07 | Informe spam
Tienes razón, la macro busca en todo el texto. Para que encuentre palabras
completas utiliza lo siguiente:
regEx.Pattern = "\b(Madrid|Roma|Berlin)\b"
Mete entre paréntesis la lista de palabras, y pon \b a cada lado, con lo que
sólo eliminará las frases con esas palabras completas.

Miguel.

"Marta" wrote:

Hola Miguel, muchas gracias,

La idea me gusta, pero encuentro un fallo y querría saber si conoces alguna
solución... la macro funciona, pero si pongo en esa lista por ejemplo "roma",
veo que también me elimina las palabras que la contienen, por ejemplo,
"romano".
Realmente quiero que me elimine la celda si esa celda contiene esa palabra,
pero no si contiene palabras que a su vez contengan esa palabra.

Muchas gracias!

"Miguel Zapico" escribió:

> Una posible solucion puede ser:
>
> Sub CheckRange()
> Set miRango = ActiveWorkbook.Worksheets(1).Range("A:A")
> For Each cell In miRango
> If BuscarPalabras(cell.Value) > 0 Then cell.Value = ""
> Next
> End Sub
>
> Function BuscarPalabras(str1)
> Dim regEx
> Set regEx = CreateObject("vbscript.regexp")
> regEx.Global = True
> regEx.Pattern = "Madrid|Roma|Berlin" '< Aqui va la lista de palabras
> regEx.IgnoreCase = True
> Set myMatches = regEx.Execute(str1)
> For Each Match In myMatches
> i = i + 1
> Next
> BuscarPalabras = i
> End Function
>
> La macro mirará los datos en la columna A de la hoja 1, y los comprobará
> contra la lista de palabras en la función (deben estar separadas por el
> simbolo |). Las celdas que contegan alguna de las palabras se eliminarán.
> La macro puede tardar un ratito, pero creo que hará lo que necesitas. Por
> si acaso, trabaja sobre una copia.
>
> Espero que te sirva,
> Miguel.
>
> "Marta" wrote:
>
> > Buenas tardes!
> >
> > Tengo un problema de urgente resolución y quería que me comentárais cómo
> > haríais esto.
> > Tengo una lista de palabras (65.000) de muchos tipos. Algunas de ellas
> > incluyen nombres de países o ciudades, y otras no.
> > Quiero eliminar de ese largo listado todas aquellas palabras que incluyan un
> > nombre de país o un nombre de ciudad (por ejemplo, si una de las palabras es
> > hoteles en madrid, que esa palabra desaparezca de mi listado).
> >
> > Como son tantas palabras y tantas ciudades/países, no puedo hacerlo
> > manualmente con un filtro.
> >
> > Se me había ocurrido crear una lista aparte de nombres de ciudades y países,
> > y hacer algo para que Excel buscara en la lista de 65.000 palabras todas
> > aquellas que incluyen alguna de las palabras de la lista de ciudades y
> > países, y que si encuentra alguna que la elimine.
> >
> > ¿Se podría hacer con una macro? ¿cómo sería esta macro? Si no... ¿qué otra
> > forma se os ocurre?
> > Esta lista de países tendría unas 50 palabras, más o menos.
> >
> > Muchas gracias por vuestra rápida ayuda!!!
> >
> > Marta
Respuesta Responder a este mensaje
#4 Marta
18/05/2006 - 22:16 | Informe spam
Perfecto ahora, Miguel, muchísimas gracias!!!!

"Miguel Zapico" escribió:

Tienes razón, la macro busca en todo el texto. Para que encuentre palabras
completas utiliza lo siguiente:
regEx.Pattern = "\b(Madrid|Roma|Berlin)\b"
Mete entre paréntesis la lista de palabras, y pon \b a cada lado, con lo que
sólo eliminará las frases con esas palabras completas.

Miguel.

"Marta" wrote:

> Hola Miguel, muchas gracias,
>
> La idea me gusta, pero encuentro un fallo y querría saber si conoces alguna
> solución... la macro funciona, pero si pongo en esa lista por ejemplo "roma",
> veo que también me elimina las palabras que la contienen, por ejemplo,
> "romano".
> Realmente quiero que me elimine la celda si esa celda contiene esa palabra,
> pero no si contiene palabras que a su vez contengan esa palabra.
>
> Muchas gracias!
>
> "Miguel Zapico" escribió:
>
> > Una posible solucion puede ser:
> >
> > Sub CheckRange()
> > Set miRango = ActiveWorkbook.Worksheets(1).Range("A:A")
> > For Each cell In miRango
> > If BuscarPalabras(cell.Value) > 0 Then cell.Value = ""
> > Next
> > End Sub
> >
> > Function BuscarPalabras(str1)
> > Dim regEx
> > Set regEx = CreateObject("vbscript.regexp")
> > regEx.Global = True
> > regEx.Pattern = "Madrid|Roma|Berlin" '< Aqui va la lista de palabras
> > regEx.IgnoreCase = True
> > Set myMatches = regEx.Execute(str1)
> > For Each Match In myMatches
> > i = i + 1
> > Next
> > BuscarPalabras = i
> > End Function
> >
> > La macro mirará los datos en la columna A de la hoja 1, y los comprobará
> > contra la lista de palabras en la función (deben estar separadas por el
> > simbolo |). Las celdas que contegan alguna de las palabras se eliminarán.
> > La macro puede tardar un ratito, pero creo que hará lo que necesitas. Por
> > si acaso, trabaja sobre una copia.
> >
> > Espero que te sirva,
> > Miguel.
> >
> > "Marta" wrote:
> >
> > > Buenas tardes!
> > >
> > > Tengo un problema de urgente resolución y quería que me comentárais cómo
> > > haríais esto.
> > > Tengo una lista de palabras (65.000) de muchos tipos. Algunas de ellas
> > > incluyen nombres de países o ciudades, y otras no.
> > > Quiero eliminar de ese largo listado todas aquellas palabras que incluyan un
> > > nombre de país o un nombre de ciudad (por ejemplo, si una de las palabras es
> > > hoteles en madrid, que esa palabra desaparezca de mi listado).
> > >
> > > Como son tantas palabras y tantas ciudades/países, no puedo hacerlo
> > > manualmente con un filtro.
> > >
> > > Se me había ocurrido crear una lista aparte de nombres de ciudades y países,
> > > y hacer algo para que Excel buscara en la lista de 65.000 palabras todas
> > > aquellas que incluyen alguna de las palabras de la lista de ciudades y
> > > países, y que si encuentra alguna que la elimine.
> > >
> > > ¿Se podría hacer con una macro? ¿cómo sería esta macro? Si no... ¿qué otra
> > > forma se os ocurre?
> > > Esta lista de países tendría unas 50 palabras, más o menos.
> > >
> > > Muchas gracias por vuestra rápida ayuda!!!
> > >
> > > Marta
Respuesta Responder a este mensaje
#5 Marta
24/05/2006 - 13:13 | Informe spam
Hola Miguel, o quien pueda ayudarme...

Te comenté que esto funcionaba, y funcionar funciona, pero me gustaría que
hiciera otra cosa, a ver si sabéis cómo.
Con la macro tal cual lo que hace es eliminar el contenido de la celda, si
encuentra en ella la palabra incluida en la lista.
Ahora me gustaría que no eliminara la celda entera, sino solo esa palabra de
la lista.
Por ejemplo, si en la lista está la palabra Madrid, y encuentra una celda
donde pone Hotel Madrid, elimina la celda y la deja en blanco.
Lo que quiero realmente es que si encuentra Hotel Madrid, elimine Madrid y
me deje la celda con la palabra Hotel.

¿Es posible? ¿cómo?

Muchísimas gracias una vez más :)

Marta

"Miguel Zapico" wrote:

Tienes razón, la macro busca en todo el texto. Para que encuentre palabras
completas utiliza lo siguiente:
regEx.Pattern = "\b(Madrid|Roma|Berlin)\b"
Mete entre paréntesis la lista de palabras, y pon \b a cada lado, con lo que
sólo eliminará las frases con esas palabras completas.

Miguel.

"Marta" wrote:

> Hola Miguel, muchas gracias,
>
> La idea me gusta, pero encuentro un fallo y querría saber si conoces alguna
> solución... la macro funciona, pero si pongo en esa lista por ejemplo "roma",
> veo que también me elimina las palabras que la contienen, por ejemplo,
> "romano".
> Realmente quiero que me elimine la celda si esa celda contiene esa palabra,
> pero no si contiene palabras que a su vez contengan esa palabra.
>
> Muchas gracias!
>
> "Miguel Zapico" escribió:
>
> > Una posible solucion puede ser:
> >
> > Sub CheckRange()
> > Set miRango = ActiveWorkbook.Worksheets(1).Range("A:A")
> > For Each cell In miRango
> > If BuscarPalabras(cell.Value) > 0 Then cell.Value = ""
> > Next
> > End Sub
> >
> > Function BuscarPalabras(str1)
> > Dim regEx
> > Set regEx = CreateObject("vbscript.regexp")
> > regEx.Global = True
> > regEx.Pattern = "Madrid|Roma|Berlin" '< Aqui va la lista de palabras
> > regEx.IgnoreCase = True
> > Set myMatches = regEx.Execute(str1)
> > For Each Match In myMatches
> > i = i + 1
> > Next
> > BuscarPalabras = i
> > End Function
> >
> > La macro mirará los datos en la columna A de la hoja 1, y los comprobará
> > contra la lista de palabras en la función (deben estar separadas por el
> > simbolo |). Las celdas que contegan alguna de las palabras se eliminarán.
> > La macro puede tardar un ratito, pero creo que hará lo que necesitas. Por
> > si acaso, trabaja sobre una copia.
> >
> > Espero que te sirva,
> > Miguel.
> >
> > "Marta" wrote:
> >
> > > Buenas tardes!
> > >
> > > Tengo un problema de urgente resolución y quería que me comentárais cómo
> > > haríais esto.
> > > Tengo una lista de palabras (65.000) de muchos tipos. Algunas de ellas
> > > incluyen nombres de países o ciudades, y otras no.
> > > Quiero eliminar de ese largo listado todas aquellas palabras que incluyan un
> > > nombre de país o un nombre de ciudad (por ejemplo, si una de las palabras es
> > > hoteles en madrid, que esa palabra desaparezca de mi listado).
> > >
> > > Como son tantas palabras y tantas ciudades/países, no puedo hacerlo
> > > manualmente con un filtro.
> > >
> > > Se me había ocurrido crear una lista aparte de nombres de ciudades y países,
> > > y hacer algo para que Excel buscara en la lista de 65.000 palabras todas
> > > aquellas que incluyen alguna de las palabras de la lista de ciudades y
> > > países, y que si encuentra alguna que la elimine.
> > >
> > > ¿Se podría hacer con una macro? ¿cómo sería esta macro? Si no... ¿qué otra
> > > forma se os ocurre?
> > > Esta lista de países tendría unas 50 palabras, más o menos.
> > >
> > > Muchas gracias por vuestra rápida ayuda!!!
> > >
> > > Marta
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida