Buscar y filtrar información de una hoja a otra

Tengo una hoja de excel llena de datos (hoja2), quiero un macro que este en otra hoja de excel (hoja1) y que al introducir una palabra busque en todas las celdas de la hoja2 y filtre las filas que contengan la palabra. En la hoja1 me muestre un listado con las filas que contenían la palabra.

1 Respuesta

Respuesta
4

Esta sería la macro

Sub buscafilas()
'Por.dam
Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
h1.Select
ufila = ActiveCell.SpecialCells(xlLastCell).Row
ucol = ActiveCell.SpecialCells(xlLastCell).Column
h1.Range(Cells(2, 1), Cells(ufila, ucol)).Clear
datobuscar = h1.Range("A1")
h2.Select
ufila = ActiveCell.SpecialCells(xlLastCell).Row
ucol = ActiveCell.SpecialCells(xlLastCell).Column
With h2.Range(Cells(1, 1), Cells(ufila, ucol))
    Set datoEncontrado = .Find(datobuscar)
    If Not datoEncontrado Is Nothing Then
        filaDato1 = datoEncontrado.Row
        Do
            filadato = datoEncontrado.Row
            h2.Rows(filadato).EntireRow.Copy _
            h1.Range("A" & h1.Range("A" & Rows.Count).End(xlUp).Row + 1)
proxima:
        Set datoEncontrado = .FindNext(datoEncontrado) 'Busca el siguiente dato
        If datoEncontrado.Row = filadato Then filadato = filadato + 1: GoTo proxima:
        Loop While Not datoEncontrado Is Nothing And datoEncontrado.Row <> filaDato1
    End If
End With
End Sub

Escribe la palabra qeu vas a buscar en la celda A1 de tu hoja 1 y ejecuta la macro.

Saludos. Dam

Si es lo que necesitas.

donde pongo la información que me diste?

Sigue estas instrucciones

Instrucciones para un botón y ejecutar la macro
1. Abre tu libro de Excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
3. En el menú elige Insertar / Módulo
4. En el panel del lado derecho copia la macro
5. Ahora para crear un botón, puedes hacer lo siguiente:
6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona Asignar macro / Selecciona: buscafilas
9. Aceptar.
10. Para ejecutarla dale click a la imagen.

Escribe la palabra que vas a buscar en la celda A1 de tu hoja 1 y ejecuta la macro (presiona el botón que acabas de crear), tu información debe estar en la hoja2

Saludos. Dam

Si es lo que necesitas.

es que yo quiero que mi búsqueda salga en la primera hoja donde esta el macro porque no solo es un resultado pueden ser varios

Eso hace la macro, el resultado te lo pone en la hoja1

Te anexo un ejemplo, ahí vienen las instrucciones

https://www.dropbox.com/s/ngl4732kzc50g7v/buscar%20find.xls

Primero prueba con los datos que van en este archivo, los datos están en la hoja2, después puedes poner todos tus datos en la hoja2.

Saludos. Dam

disculpa, ya me salio. solo quiero que las filas de resultados me salgan a partir de la fila 15 para poder ponerle un formato bonito. muchísimas gracias es lo ultimo que me falta.

Ahhh, insinúas que lo que hice está feo, está bien, me lo merezco.

Esta es la macro (la de formato feo), para que empiece en la fila 15

Sub buscafilas()
'Por.dam
Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
h1.Select
ufila = ActiveCell.SpecialCells(xlLastCell).Row
ucol = ActiveCell.SpecialCells(xlLastCell).Column
h1.Range(Cells(15, 1), Cells(ufila, ucol)).Clear
datobuscar = h1.Range("A1")
h2.Select
ufila = ActiveCell.SpecialCells(xlLastCell).Row
ucol = ActiveCell.SpecialCells(xlLastCell).Column
ufilap = 15
With h2.Range(Cells(1, 1), Cells(ufila, ucol))
    Set datoEncontrado = .Find(datobuscar)
    If Not datoEncontrado Is Nothing Then
        filaDato1 = datoEncontrado.Row
        Do
            filadato = datoEncontrado.Row
            h2.Rows(filadato).EntireRow.Copy _
            h1.Range("A" & ufilap)
            ufilap = ufilap + 1
proxima:
        Set datoEncontrado = .FindNext(datoEncontrado) 'Busca el siguiente dato
        If datoEncontrado.Row = filadato Then filadato = filadato + 1: GoTo proxima:
        Loop While Not datoEncontrado Is Nothing And datoEncontrado.Row <> filaDato1
    End If
End With
h1.Select
End Sub

Saludos.Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas