Macro para copiar datos a otra hoja, y detecte la fila vacía para seguir haciendo registros.

Tengo una hoja llamada Cargo_liq. Lleno unos datos y quiero que con una macro los datos de la columna llamada (OD), pasen a la hoja llamada registro y se copie a partir de "C3".

Como es un cargo que lleno diariamente siempre ingreso datos y quiero que se vayan registrando en mi hoja registros. No me sale con la grabadora de Macros, ya que no se como hacer para que se detecte la fila vacía cada vez que registro y no se borre lo ingresado.

2 Respuestas

Respuesta
2

Te anexo una macro, para copiar de una hoja a la otra.

No me queda claro si quieres transponer los datos de la columna OD, pero supongo que debe ser así.

Sub CopiarRegistro()
'Por.Dante Amor
    Set h1 = Sheets("Cargo_liq")
    Set h2 = Sheets("registro")
    u1 = h1.Range("OD" & Rows.Count).End(xlUp).Row
    u2 = h2.Range("C" & Rows.Count).End(xlUp).Row + 1
    h1.Range("OD1:OD" & u1).Copy
    h2.Range("C" & u2).PasteSpecial Paste:=xlPasteValues, Transpose:=True
End Sub

Revisa el nombre de las hojas y el de las columnas, tampoco pusiste desde que fila y hasta que fila quieres copiar , por lo que la macro toma desde la fila 1 y hasta la última fila que tenga datos en la columna "OD"

Hola Amigo Dante:

No tengo que transponer los datos de la columna OD, por ejemplo estas así:

los datos resaltados en amarillo, quiero que se pasen a la  hoja registro a partir de C3, y así sucesivamente cada ves que abro mi cargo e ingrese nuevas ODS y se vayan registrando debajo de la ultimo registro.

:

Tampoco queda claro cuántos registros vas a copiar, ni si los siguientes registros a copiar van debajo de los anteriores. O cada vez que ejecutes la macro copie todos los registros de una hoja a otra, y los registros que estaban en la hoja "registro" sean reemplazados por los nuevos.

Disculpa pero no comprendo cuál es la secuencia de copiar y pegar, cada vez que ejecutes la macros.

Prueba con la siguiente macro, lo que hace es copiar el último registro de "Cargo_liq" y lo pone en la siguiente fila vacía. Entonces debes ejecutar la macro después de crear un registro, para que en automático ese registro lo pase a la hoja "registro"

Sub CopiarRegistro()
'Por.Dante Amor
    Set h1 = Sheets("Cargo_liq")
    Set h2 = Sheets("registro")
    u1 = h1.Range("C" & Rows.Count).End(xlUp).Row
    u2 = h2.Range("C" & Rows.Count).End(xlUp).Row + 1
    '
    h1.Range("B" & u1).Copy
    h2.Range("A" & u2).PasteSpecial Paste:=xlPasteValues
    h2.Range("B" & u2) = Date
    h1.Range("C" & u1 & ",D" & u1 & ",E" & u1 & ",K" & u1).Copy
    h2.Range("C" & u2).PasteSpecial Paste:=xlPasteValues
End Sub
Respuesta
2

Aquí te dejo la macro

Sub CopiaColumnaOD()
'
' Marcial Castro
'
'
    Sheets("Hoja1").Select
    uf = Range("OD" & Rows.Count).End(xlUp).Row
    Range("OD1:OD" & uf).Select
    Selection.Copy
    Sheets("Registros").Select
    uf = Range("C" & Rows.Count).End(xlUp).Row
    Range("C" & uf + 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues
End Sub

Cambia el nombre de la Hoja1 por el nombre de tu hoja.

PD: Si te ha servido, no olvides valorar la respuesta.

Me sobran algunas líneas en la macro, utiliza esta:

Sub CopiaColumnaOD()
' Marcial Castro
    Sheets("Hoja1").Select
    uf = Range("OD" & Rows.Count).End(xlUp).Row
    Range("OD1:OD" & uf).Copy
    Sheets("Registros").Select
    uf = Range("C" & Rows.Count).End(xlUp).Row
    Range("C" & uf + 1).PasteSpecial
End Sub

Estimado gracias por tu aporte, una consulta más el uf que quiere decir.

Me puedes brindar un correo para pasarte mi archivo.

por favor... dame otra ayudita más.

Uf es para saber la última fila de datos, tanto en la hoja de donde hay que copiar cómo en la hoja Registros.

tienes un correo para enviarte mi archivo y lo puedas revisar, cuando tengas un tiempo amigo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas