![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
06/06/2007, 03:46
|
![Avatar de 3pies](http://static.forosdelweb.com/customavatars/avatar49448_4.gif) | Colaborador | | Fecha de Ingreso: diciembre-2003 Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 21 años, 2 meses Puntos: 144 | |
Re: Buscar palabras de x letras en excel Prueba con este macro (lo he probado y funciona, pero no ha sido una prueba a fondo, y tampoco he depurado el código, aunque seguramente se podrían reducir líneas):
Código:
Sub buscar()
'creamos la variable "palabra_a_buscar", que será igual al valor
'que introduzcamos ebusquedael inputbox
palabra_a_buscar = Trim(InputBox("Introduce la palabra a buscar", "Buscador"))
'Asignamos el objeto "buscar", a la variable "busqueda"
Set busqueda = Cells.Find(What:=palabra_a_buscar)
'Si no existe esa palabra buscada, mostramos un mensaje
If busqueda Is Nothing Then
MsgBox "No he encontrado nada. Lo siento."
'Si existe esa palabra buscada...
Else
'Si la palabra encontrada tiene 4 letras...
'asignamos el primer resultado a una variable, para que cuando creemos el bucle
'de búsquedas no entre en un loop infinito de búsquedas, y se pare al volver a
'encontrar el primer resultado (no sé si ha quedado muy claro...)
primer_resultado = busqueda.Address
'Creamos un bucle por si encuentra más de 1 palabra
Do
'redefinimos el objeto búsqueda con los siguientes resultados
Set busqueda = Cells.FindNext(busqueda)
'seleccionamos la celda donde estamos
Range(busqueda.Address).Select
'nos fijamos en la celda de que se trate, y quitamos
'el valor absoluto que devuelve ($). En realidad, lo que
'estamos haciendo, es reemplazar $ por nada
celda_encontrada = Replace(busqueda.Address, "$", "")
'Si la celda encontrada tiee 4 caracteres...
If Len(Range(busqueda.Address)) = 4 Then
'creamos un contador
contador = contador + 1
End If
'Si la celda donde estamos corresponde al primer resultado
'de la búsqueda, y tiene 4 caracteres, mostramos un mensaje
If contador = 1 And Len(Range(busqueda.Address)) = 4 Then
MsgBox "En la celda " & celda_encontrada & " tienes la palabra " & UCase(palabra_a_buscar) & "."
'y si corresponde a otro resultado (segundo, tercero, etc)
'y tiene 4 caracteres, mostramos otro mensaje
ElseIf contador <> 1 And Len(Range(busqueda.Address)) = 4 Then
MsgBox "...y en la celda " & celda_encontrada & "."
End If
'seguimos buscando mientras encuentre algún resultado, y mientras
'no volvamos a obtener el primer resultado
Loop While Not busqueda Is Nothing And busqueda.Address <> primer_resultado
End If
'limpiamos el objeto
Set busqueda = Nothing
End Sub
NOTA: Solo busca aquellas palabras que encuentre y que tengan 4 caracteres.
Salu2 |