Buscador de Datos en Excel con resalte de fila

Para Dante Amor,

Hola Dante, me gustaría saber como puedo hacer un buscador que funcione de la siguiente forma: Una celda servirá como campo de búsqueda (será donde se metan los datos de búsqueda, texto o número), Un botón que hará las veces de lupa, activará la macro de búsqueda. La búsqueda se hará sobre el rango de una tabla y cuando encuentre el resultado, la fila donde se encuentre este se resaltará. ¿Es posible?

Respuesta
3

Envíame tu archivo con un ejemplo de un valor buscado, encontrado y resaltado.

La tabla está en la misma hoja o en otra hoja.

No olvides poner tu nombre en el asunto del correo

Te he enviado un mail con un pequeño esquema de lo que busco. Saludos.

Perdona no te comenté que la tabla está en la misma hoja donde se realiza la búsqueda.

Estoy trabajando con este código y no me funciona bien, no sé porque. Asigno la macro al botón de buscar y me sale la ventana con el mensaje "Palabra a buscar" para introducir los datos de búsqueda, cuando le doy a Aceptar, nunca me encuentra nada. No sé por qué.

El código es este, es similar a lo que quiero y me puede valer en un momento dado:

Sub BuscarPalabras()

Dim Celda As Range
Dim palabra As String

    palabra = InputBox("Palabra a buscar")
    palabra = "*" & palabra & "*"
    For Each Celda In Selection
        If Celda.Value Like palabra Then
        Celda.Interior.ColorIndex = 36
        End If
    Next Celda

End Sub
Puedes explicarme por qué no me esta funcionando?

Tienes que poner un rango en lugar de selection.

Con selection, le estás indicando que solamente busque en las celdas seleccionadas, si solamente tienes una celda seleccionada, en esa celda busca

Prueba con este rango, cambia "A1:D20", por el rango en donde quieras buscar.

Sub BuscarPalabras()
    palabra = InputBox("Palabra a buscar")
    palabra = "*" & palabra & "*"
    For Each Celda In Range("A1:D20")
        If Celda.Value Like palabra Then
        Celda.Interior.ColorIndex = 36
        End If
    Next Celda
End Sub

Si el rango es muy grande la macro será más lenta.

Con esta macro te busca en todo el rango que tengas usado en la hoja de excel y es más rápida

Sub BuscarVarias()
'Por.Dante Amor
    palabra = InputBox("Palabra a buscar")
    Set r = ActiveSheet.Range("A1", ActiveSheet.UsedRange)
    Set b = r.Find(palabra, lookat:=xlPart)
    r.Interior.ColorIndex = xlNone
    If Not b Is Nothing Then
        ncell = b.Address
        Do
            b.Interior.ColorIndex = 36
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> ncell
    End If
End Sub

¡Gracias! Como siempre has dado en el clavo, hace exactamente lo que buscaba. ¿Donde puedo ver los códigos correspondientes a la gama de colores por si quiero cambiarlo?.

Saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas