Como buscar un valor de una columna especifica y exportar los datos de su fila

Como puedo generar una macro para cualquier libro donde al buscar (dar "Ctrl+b" ) un valor de una columna seleccionada, si encuentra el dato copie todos los datos de su fila y lo pegue en otra hoja cualquiera que se asigne.

Respuesta
2

Te anexo una macro para buscar varias coincidencias con el valor a buscar.

Cambia en la macro "Hoja1", por la hoja con datos

Cambia "Hoja2", por la hoja con resultados

col = "A" por la columna que tiene los datos

B1 por la celda en la que vas a escribir el valor

Sub BuscarVarios()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1") 'Hoja con datos
    Set h2 = Sheets("Hoja2") 'Hoja con resultados
    col = "A"                'columna con datos
    valor = [B1]             'Valor a buscar
    '
    j = 1
    h2.Cells.ClearContents
    Set r = h1.Columns(col)
    Set b = r.Find(valor, lookat:=xlPart)
    If Not b Is Nothing Then
        ncell = b.Address
        Do
            h1.Rows(b.Row).Copy h2.Rows(j)
            j = j + 1
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> ncell
    End If
    h2.Select
    MsgBox "Registros copiados a la hoja de resultados"
End Sub

Nota: Si quieres que el contenido de la búsqueda sea exacta, cambia en la macro xlPart por xlWhole


La idea es que tengas tu Hoja1 con datos de esta forma:


Te anexo mi archivo para que veas el funcionamiento.

https://www.dropbox.com/s/rwh2rzb3c3n4twy/buscar%20varios.xlsm?dl=0 


Saludos. Dante Amor

Si te sirve la información.

1 respuesta más de otro experto

Respuesta
2

Esta sería una macro de ejemplo, debes ajustar donde te comento:

Sub busqueda()
'x Elsamtilde
'Completa estos datos según tu necesidad
destino= "Hoja3"   '**       
rgo = "C:C"      'columna **
dato = Range("E1").Value  '**
Set busco = ActiveSheet.Range(rgo).Find(dato, LookIn:=xlValues, lookat:=xlWhole)
If busco Is Nothing Then
    MsgBox "No se encontró el dato buscado"
    Exit Sub
End If
'se encontró el dato, copia la fila entera
filx = sheets(destino).range("A" & Rows.count).end(xlup).row+1
busco.entirerow.Copy destination:=sheets(destino).Range("A" & filx) '*
End Sub

Donde aparecen ** tenés que completar con tus referencias

No indicas si vas a copiar al final de los datos de la hoja destino, pero así lo asumí

Armala y probala. Si necesita de algún ajuste, dejamela escrita aquí tal como te quedó.

¡Gracias!

Me fue da gran utilidad. Tengo un proyecto de esquemas, o tablas dinámicas para un seguimiento mensual de datos, he intentado varias opciones pero no encuentro una manera optima y estética. Puedes darme tu correo para comentarte y ver si puedes ayudarme.

Gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas