Como hacer un VLookup con una macro y que al encontrar el valor me ponga un rago de celdas y no solo un valor

Necesito una macro en la que al colocar un valor -(que siempre es igual a 18 dígitos) en la celda "E4" DE LA HOJA "CAPTURA TOTAL"

Haga un Vlookup ( o cualquier función parecida, y que sea al presionar un botón) en el rango de "e4:e10000" de la matriz "E4:GF14000" de la hoja "NB1"y me de en la hoja "captura total" el rango de la fila donde encontró el resultado rango de "F:GF" con el mismo formato del origen o sea de hoja "nb1",

Y que si no encuentra el dato me diga "no encontrado"

1 Respuesta

Respuesta
2

Te anexo la macro para buscar el CURP de E4 en la hoja NB1, tal como lo pediste

Sub Buscar_Curp()
'Por.Dante Amor
    Set h1 = Sheets("CAPTURA TOTAL")
    Set h2 = Sheets("NB1")
    h1.Select
    If h1.Range("E4") = "" Then
        MsgBox "Captura el curp"
        h1.Range("E4").Select
        Exit Sub
    End If
    '
    Set b = h2.Columns("E").Find(h1.Range("E4"), lookat:=xlWhole)
    If b Is Nothing Then
        MsgBox "No encontrado", vbExclamation
    Else
        h2.Range("F" & b.Row & ":GF" & b.Row).Copy h1.Cells(4, "F")
        MsgBox "Dato copiado", vbInformation
    End If
End Sub

Pero veo en tu imagen que tienes curp en las celdas E4, E5, E6,  y supongo que más celdas.

Entonces tal vez necesites una macro automática, por cada vez que modifiques las celdas de la columna E se ejecute en automático.


Avísame si quieres la macro automática.


.

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

.

Avísame cualquier duda

.

excelentisimo codigo :) y tienes razon una macro que sea automatica seria mucho mejor , tengo un boton de agregar paciente, el cual agrega una fila para siempre hacer el registro en "E4"

asi que si se pudiera poner la instrucción de la siguiente forma me ayudaria enormemente

"Que al colocar la curp en la hoja captura total y dar enter, haga una búsqueda primero en el rango "E5:E"hasta donde encuentre datos", y si no lo encuentre haga la misma búsqueda en las hojas "NB1", "NB2","NB3", "NB4""NB5", "NB6" y solo que no encuentre el dato arroje no encontrado y que si si lo encuentra pues haga exacatmente lo que hizo el código que ya me diste, :)"

Claro que todas las hojas son iguales

En serio muchas gracias,

Pon la siguiente macro en los eventos de tu hoja "CAPTURA TOTAL"

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Columns("E")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        If Target.Row < 4 Then Exit Sub
        If Target.Value = "" Then Exit Sub
        '
        existe = False
        For Each h In Sheets
            Select Case UCase(Left(h.Name, 2))
                Case "NB"
                    Set b = h.Columns("E").Find(Target.Value, lookat:=xlWhole)
                    If Not b Is Nothing Then
                        existe = True
                        h.Range("F" & b.Row & ":GF" & b.Row).Copy Cells(Target.Row, "F")
                        Exit For
                    End If
            End Select
        Next
        If existe = False Then
            MsgBox "No encontrado", vbExclamation
            Target.Select
        End If
    End If
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet("CAPTURA TOTAL")
  4. En el panel del lado derecho copia la macro

Funciona de la siguiente manera. Cada vez que captures un dato en la columna E de la hoja "CAPTURA TOTAL" y presionas enter, la macro se ejecuta automáticamente, busca en todas las hojas "NB" el dato capturado, si lo encuentra, te pega los datos, si no lo encuentra, te envía el mensaje.


Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas