Macro copiar columnas rango variable

Llevo tiempo consultando la web de todoexpertos, y siempre que surge una duda intento resolverla a partir de alguna respuesta que encuentro en el site, aunque no siempre es evidente!... Te comento, tengo una tabla excel en hoja1 y quiero seleccionar, copiar y pegar a hoja 2 (donde tengo fórmulas) columnas A, E y G, de rango variable, para entendernos, que el numero de filas varia!
Añadir que las columnas A, E y G de hoja1 tienen encabezamiento y los datos empiezan en fila 8. También que las columnas anteriores al copiarse en hoja 2, aparecen en las columnas A, B y C a partir de la fila 3, entendiendo que en fila 3 hay los encabezamientos.
He encontrado el código siguiente que he adaptado:
fila=Sheets("Hoja2").Range("A65536").End(xlUp).Row+2
Selection.Copy Destination:=Sheets("Hoja2").Cells(fila,1)
Pero para que funcione debo seleccionar manualmente las columnas A, E y G de Hoja1.
La duda... Como puedo a partir de una macro "sencilla" que seleccione, copie y pegue las columnas A, ¿E y G en la Hoja 2?
1

1 respuesta

Respuesta
3
Te dejo una rutina 'sencilla', no coloqué ningún bucle para que te sea fácil modificar si hiciera falta.
La macro busca en cada col el fin de datos, pero si todas las col tendrán el mismo largo solo dejá la primera línea donde se busca 'filafin'
Sub copiado()
Sheets("Hoja1").Select
'col A
filafin = ActiveSheet.Range("A65536").End(xlUp).Row
ActiveSheet.Range("A8:A" & filafin).Copy Destination:=Sheets("Hoja2").Range("A4")
'col E
filafin = ActiveSheet.Range("E65536").End(xlUp).Row
ActiveSheet.Range("E8:E" & filafin).Copy Destination:=Sheets("Hoja2").Range("B4")
'col G
filafin = ActiveSheet.Range("G65536").End(xlUp).Row
ActiveSheet.Range("G8:G" & filafin).Copy Destination:=Sheets("Hoja2").Range("C4")
End Sub
Sdos
Elsa
PD) Todo lo que necesites saber sobre macros lo encontrarás en mis manuales (son los 'originales' ;)
Hola Elsa, primero de todo gracias por la respuesta, pero... hay un "problemilla", en la columna G tengo datos numéricos, exactamente es la diferencia en días entre dos fechas, y no se pegan en la hoja2!?!?. Incluso he intentado crear una columna auxiliar, donde solo aparezca el valor numérico y no la fórmula! Y tampoco se pega...
También he intentado probar con diferentes formatos, como "número", "texto", y tampoco se pega la columna G, en cambio la columna A y E donde no hay fórmulas se pega en la hoja2 sin ningún problema..
¿Cómo podría conseguir pegar en la hoja2 los datos (valores numéricos) de la columna G si provienen de una fórmula?
De nuevo muchas gracias...
Un saludo
Para esa col estos son los ajustes:
ActiveSheet. Range("G8:G" & filafin). Copy
    Sheets("Hoja3").Select
    Activesheet.Range("C4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
'volver a la hoja principal
sheets("Hoja1").select
application.cutcopymode = false
Muchas gracias Elsa... de verdad!,... por la ayuda y predisposición ante inquietudes, dudas,..., que siempre hay!
Un saludo y hasta la próxima...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas