Si coincide nombre de columna pegar columna completa a otra hoja

Tengo una base de datos con indeterminado numero de columnas en la hoja llamada "archivo_base" que tienen como encabezado varios nombres; lo que quiero es con un macro buscar ciertos nombres de encabezado en la hoja "archivo_base" y si coincide copie toda la columna y la pegue en otra hoja llamada "resumen". Nota: para buscar el encabezado NO quiero que aparezca un cuadro pidiéndome el texto a buscar sino que se incorpore directamente en el macro.

1 Respuesta

Respuesta

H o l a

Te paso la macro asumiendo que tus encabezados está en la fila 1

Sub buscar_copiar()
Set h1 = Sheets("archivo_base")
Set h2 = Sheets("resumen")
buscar = "logística"
Set b = h1.Rows(1).Find(buscar, lookat:=xlWhole)
    If Not b Is Nothing Then
        For i = 2 To h1.Cells(Rows.Count, b.Column).End(xlUp).Row
            h2.Cells(i, "A") = h1.Cells(i, b.Column)
        Next
    End If
    MsgBox "Fin"
h2.Select
End Sub

Aquí pones el texto a buscar, en este caso puse logística

buscar = "logística"

Valora la respuesta para finalizar Saludos!

Buen día, gracias por el macro funciona para una búsqueda, podrías colaborar adaptándolo para buscar varias palabras ejemplo logística, día, funcionario, etc. gracias

En tu petición dice: "NO quiero que aparezca un cuadro pidiéndome el texto a buscar sino que se incorpore directamente en el macro."

¿Deseas buscar 2 o 3 al mismo tiempo?

Gracias, si deseo buscar y que me copie varias columnas al mismo tiempo, para mi trabajo en realidad son 30 columnas de una base que tiene 125 columnas.  gracias

La macro anterior es para una sola

Entonces usa esto que permitirá elegir las columnas

Sub copiado()
Sheets("Hoja1").Select
'col A
filafin = ActiveSheet.Range("A65536").End(xlUp).Row
ActiveSheet.Range("A2:A" & filafin).Copy Destination:=Sheets("Hoja2").Range("A2")
'col E
filafin = ActiveSheet.Range("E65536").End(xlUp).Row
ActiveSheet.Range("E2:E" & filafin).Copy Destination:=Sheets("Hoja2").Range("B2")
'col G
filafin = ActiveSheet.Range("G65536").End(xlUp).Row
ActiveSheet.Range("G2:G" & filafin).Copy Destination:=Sheets("Hoja2").Range("C4")
'
'
'
'así para el resto
End Sub

Finaliza la pregunta con una valoración Excelente o Bueno.

Te mando la opción 2

Te puse como que voy a copiar la columna A, D, H a la hoja2

Sub Copiar()
'OPCIÓN 2
Sheets("Hoja1").Select
Range("A:A,D:D,H:H").Copy
Sheets("Hoja2").[A1].PasteSpecial xlValues
Application.CutCopyMode = True
End Sub

No olvides de finalizar puntuando saludos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas