MACRO que busque datos y devuelva múltiples resultados

O quien sepa). Intenté a través de un compañero del foro realizar una macro en un excel en el que, a través de una base de datos en la página 1 (imagen 1) e introduciendo un número identificador en la página 2 me devolviera todos los resultados encontrados, tanto para el 2015, 2016 y 2017. La información a devolver sería, a modo de ejemplo, la de la imágen 2. Ingresando el DNI en la celda C4 nos retorne lo que encuentre.

Imagen 1 (base datos):

Imagen 2 (tabla de resultados):

Muchas gracias! Si prefieres que te mande archivos por mail, me lo indicas y te lo mando.

Xitus

1 respuesta

Respuesta
1

Sí, envíame tu archivo para ver las filas y las columnas en donde buscar.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “xitus” y el título de esta pregunta.

Muchas gracias Dante. Ya lo tienes en tu bozón. 

Saludos.

Xitus

Te anexo la macro

Sub Buscar_Dni()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("Resultados")
    Set h2 = Sheets("Datos")
    '
    h1.Rows("6:" & Rows.Count).ClearContents
    If h1.Range("C4") = "" Then
        MsgBox "Captura el DNI"
        h1.Range("C4").Select
        Exit Sub
    End If
    '
    Set r = h2.Cells
    Set b = r.Find(h1.Range("C4"), LookAt:=xlWhole)
    If Not b Is Nothing Then
        celda = b.Address
        Do
            'detalle
            año = h2.Cells(2, b.Column)
            col = ""
            For i = 5 To h1.Cells(4, Columns.Count).End(xlToLeft).Column
                If h1.Cells(4, i) = año Then
                    col = i
                    Exit For
                End If
            Next
            '
            If col <> "" Then
                f = 6
                Do While h1.Cells(f, col + 1) <> ""
                    f = f + 1
                Loop
                h1.Cells(f, col + 1) = h2.Cells(b.Row, b.Column + 1)
                h1.Cells(f, col + 2) = h2.Cells(b.Row, b.Column + 3)
                h1.Cells(f, col + 3) = h2.Cells(b.Row, b.Column + 4)
                h1.Cells(f, col + 4) = h2.Cells(b.Row, b.Column + 5)
                h1.Cells(f, col + 5) = h2.Cells(b.Row, b.Column + 6)
            End If
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> celda
    End If
    Application.ScreenUpdating = True
    MsgBox "fin"
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas