Macro para copiar los datos de una columna solo hasta la ultima fila q tenga datos

Me podrian ayudar estoy intentando crear una macro para copiar los datos de la hoja1;columna C apartir de la fila 5 hasta la última fila q contenga datos y luego pegarlos en la hoja 2 en la columna b pero en la primera fila q esté vacia. Hasta ahora lo q he logrado es copiar un rango fijo, pero si se incluyen nuevos datos en las siguientes filas, no me copia esos datos

Respuesta
1

H o l a 

te paso la macro

Sub copiar()
'por.Adriel ortiz
    Set h1 = Sheets("hoja1")
    Set h2 = Sheets("hoja2")
    j = h1.Range("C" & Rows.Count).End(xlUp).Row
    If j > 1 Then j = 5
    For i = 5 To h1.Range("C" & Rows.Count).End(xlUp).Row
            u = h2.Range("B" & Rows.Count).End(xlUp).Row + 1 ' ultima fila hoja2
            h2.Cells(u, "B") = h1.Cells(j, "C")
            j = j + 1
    Next
    MsgBox "Valores copiados"
End Sub

Valora para finalizar Excelente o bueno saludos!

¡Gracias! Adriel la macro funciona perfectamente, de verdad mil gracias por la ayuda...  disculpame pero mas adelante si quiero no sólo copiar la columna C, sino también la columna D, pero esos datos pegarlos en la columna c de la misma hoja 2, con los mismos parametros, cómo se modifica esa macro

Macro actualizada

Sub copiar()
'por.Adriel ortiz
    Set h1 = Sheets("hoja1")
    Set h2 = Sheets("hoja2")
    j = h1.Range("C" & Rows.Count).End(xlUp).Row
    If j > 1 Then j = 5
    For i = 5 To h1.Range("C" & Rows.Count).End(xlUp).Row
            u = h2.Range("B" & Rows.Count).End(xlUp).Row + 1 ' ultima fila hoja2
            h2.Cells(u, "B") = h1.Cells(j, "C")
            h2.Cells(u, "C") = h1.Cells(j, "D")
            j = j + 1
    Next
    MsgBox "Valores copiados"
End Sub

1 respuesta más de otro experto

Respuesta
1

. 07.12.16 #VBA pega rango en otra hoja

Buenas, Yeifre

La siguiente rutina identifica tanto el rango a copiar como la primera celda disponible en destino.

Accede al Editor de VBA (Atajo: Alt + F11), allí inserta un módulo (Insertar-Módulo) y pega el siguiente código:

Sub copiaRango()
'---- Variables modificables ----
'=== YEIFRE, modifica estos datos de acuerdo a tu proyecto:
    Inirango = "C5" ' celda inicial del rango a copiar
    HojaDest = "Hoja 2" ' Hoja donde dejar lo copiado
    TitDestino = "B1" ' fila de títulos en hoja de destino
'---- fin Variables
'
'---- inicio de rutina:
'  
UltFila = Sheets(HojaDest).Range(Left(TitDestino, 1) & Rows.Count).End(xlUp).Row 'identifica última celda ocupada en destino
Range(Inirango).CurrentRegion.Copy ' toma el rango desde la celda inicial
Sheets(HojaDest).Range(Left(TitDestino, 1) & UltFila + 1).PasteSpecial Paste:=xlPasteValues
Sheets(HojaDest).Range(Left(TitDestino, 1) & UltFila + 1).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
End Sub

Nota que, al principio del código, hay unas variables -explicadas- para que lo adaptes a tu archivo. Así como están responde a lo que planteaste.

Pruébalo y coméntame si es lo que buscabas -y, en tal caso, agradeceré que califiques mi contribución- o escribeme de nuevo aquí, si necesitas más apoyo con esto.

Un abrazo

Fernando

(Buenos Aires, Argentina)

.

Gracias por responder tan rápido... fejoal pero la macro me da un error en la primera fila de la rutina... lo coloqué tal cual, no se porq el error... sin embargo me enviaron otro macro q tiene otra estructura y me funcionó perfectamente 

.

Buenas tardes,

Sólo noto que en la otra rutina usa Hoja2 y yo, siguiendo tu explicación inicial, coloqué -dentro de la variable- "Hoja 2", con espacio.

Probablemente haya algún problema con el contenido de las variables. Por ello recomiendo que las revisen correctamente. Eso es lo que permite cambiarlas cuando fuere necesario y que la rutina siga funcionando.

Pruebala modificandolas de acuerdo a tu archivo

Las pruebas que hice con ella, me daban el resultado que pedías.

Un abrazo
Fer

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas