Buscar un dato en una tabla - Realizar alguna acción con el o los datos encontrados

Revisando tu blog me encontré con esta descarga, pero no consigo adaptarla a mis necesidades.

Necesito buscar un dato, y copiar la información en otra hoja y en diferentes celdas, no como tu ejemplo que es una fila. La hoja a copiar es la siguiente:

El dato a buscar se encuentra en la hoja "BBDD" el la columna "B"

Este es el código que planteaste en tu blog

Sub CopiarRegistro()
'x Elsamatilde
'se busca cierto registro en Hoja1,
'si lo encuentra copia fila completa a Hoja3
'se solicita el dato a buscar
codi = InputBox("Ingrese el código a buscar")
'si se cancela finaliza el evento.
If IsEmpty(codi) Then Exit Sub
'1er fila de destino
filx = Sheets("Hoja3").Range("A" & Rows.Count).End(xlUp).Row + 1
'se busca la ubicación del código solicitado.
Set busco = Range("A6:A" & Range("A" & Rows.Count).End(xlUp).Row).Find(codi, LookIn:=xlValues, lookat:=xlWhole)
'si encuentra el dato, copia la fila completa a la hoja3
If Not busco Is Nothing Then
    busco.EntireRow.Copy Destination:=Sheets("Hoja3").Range("A" & filx)
    MsgBox "COPIADO !"
Else
    MsgBox "No se encontró este dato en la tabla", , "SIN COINCIDENCIAS"
End If
End Sub

1 respuesta

Respuesta
1

Me ahorrará tiempo desarrollar la macro sobre tu mismo libro. De la hoja BBDD podes dejar sólo 1 fila de datos que me alcanzara.

Mis correos se encuentran en el encabezado de mi sitio.

Sdos.

Elsa

Más o menos sería así, te dejo marcado dónde hacer algunos ajustes. Luego debes completar el pase de cada campo.

Sub CopiarRegistro()
'x Elsamatilde
'se busca cierto registro en Hoja1 '-----HOJA BBDD
'se solicita el dato a buscar
codi = ActiveSheet.Range("G6") '-------- SE EJECUTA DESDE LA HOJA COMPROBANTE
'si la celda está vacía finaliza el evento.
If codi = "" Then Exit Sub
'se busca la ubicación del código solicitado. ---VERIFICA NOMBRE DE HOJA Y RANGO
Set busco = Sheets("BBDD").Range("B2:B" & Range("B" & Rows.Count).End(xlUp).Row).Find(codi, LookIn:=xlValues, lookat:=xlWhole)
'si encuentra el dato, pasa los campos a la hoja activa
If Not busco Is Nothing Then
Range("F3") = busco.Offset(0, -1) 'fecha
Range("B12") = busco.Offset(0, 1) 'beneficiario
' -----------------------ASÍ CON CADA CAMPO
Else
MsgBox "No se encontró este dato en la hoja BBDD", , "SIN COINCIDENCIAS"
End If
End Sub

Esta macro iniciada como Sub... se coloca en un módulo. Se llamará desde un botón o atajo de teclado.

También podría ser llamada desde el evento Change de la hoja Comprobante, que se ejecutará cuando se ingresa un valor en G6:


'se ejecuta al cambio en G:H de fila 6
If Target.Address <> "$G$6:$H$6" Then Exit Sub
'si se borra la celda no se ejecuta
If Target = "" Then Exit Sub

Call CopiarRegistro
End Sub

Probala y si te queda algún error enviame tu libro.

Sdos!

¡Gracias! Elsa por tu ayuda. Me esta dando error en la siguiente línea:

Set busco = Sheets("BBDD").Range("B2:B" & Range("B" & Rows.Count).End(xlUp).Row).Find(codi, LookIn:=xlValues, lookat:=xlWhole)

Donde esta el dato a buscar es en la hoja BBDD y en la columna B

Las referencias parecen correctas. El error te lo debe estar provocando la variable 'codi' o esta mal escrita la instrucción. Pasame las hojas x correo.

Sdos!

Listo te lo envíe al mail, Gracias

Disculpa, pero la línea del Set debes dejarla así:

Set busco = Sheets("BBDD").Range("B2:B" & Sheets("BBDD").Range("B" & Rows.Count).End(xlUp).Row).Find(codi, LookIn:=xlValues, lookat:=xlWhole)

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas