Seleccionar sólo última fila con datos

Buenos días.

Tengo la siguiente necesidad: Necesito copiar el rango A:D de la última fila, con datos, de la hoja1, al rango C:F de la última fila vacía de la hoja2. Con el siguiente macro se selecciona todo el rango desde la primera celda, pero sólo necesito el rango de celdas de la última fila con datos.

¿Me podrían ayudar?

Muy agradecido

Sub Copia()
Sheets("hoja1").Select
Dim UltimaFila As Long
    If WorksheetFunction.CountA(Cells) > 0 Then
        UltimaFila = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
ActiveSheet.UsedRange.Select
    End If
Selection.Copy
Sheets("hoja2").Select
Range("C65000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
End Sub

1 respuesta

Respuesta
1

Para encontrar la ultima fila ocupada hay varios modos pero el más seguro es este, si tomamos como referencia la col A

ultima = Range("A" & Rows.Count).End(xlUp).Row

Si al final de esta línea le agregas +1 te dará la primer fila libre.

Entonces tu macro quedaría así:

Sub Copia()
'x Elsamatilde
Sheets("hoja1").Select
Dim UltimaFila As Long
UltimaFila = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
ActiveSheet.Range("A" & UltimaFila & ":D" & UltimaFila).Copy
Sheets("hoja2").Select
Range("C" & Range("C" & Rows.Count).End(xlUp).Row + 1).PasteSpecial xlPasteValues
'para quitar el modo de copiado
Application.CutCopyMode = False
End Sub

Observa que para encontrar la primer fila libre utlice la misma instrucciòn sin utilizar variables.

PD) Actualiza tu visita a la sección macros de mi sitio. Encontraras mucho código para utilizar.

Sdos

Elsa

Muchísimas gracias por su tiempo, rapidez y atención.

Me actualizo ahora ahora en la sección de macros

saludos

Estimados expertos:

Me permito seguir preguntando sobre esta duda, ya resulta inicialmente, pero que me ha surgido el siguiente imprevisto:

En la Hoja1 tengo que copiar dos rangos con contiguos, es decir: copiar los rangos A:D y G:M a la Hoja 2, ¿cómo podría ser la secuencia?

Un cordial saludo

Con las prisas, he cometido algún error de expresión, por lo que quizás no quedó clara mi consulta. Se trata de hacer una modificación de la pregunta inicial, en la que se preguntaba sobre copiar un rango desde la última fila de datos de la Hoja1 a la Hoja2. Ahora desearía que en lugar de copiar un sólo rango, fueran dos rangos no contiguos, es decir: copiar los rangos A:D y G:J de la Hoja1 a los rangos B:E y H:K de la Hoja 2, ¿cómo ser la secuencia?

Un cordial saludo

Te dejo la macro completa:

Sub Copia()
'x Elsamatilde
Sheets("hoja1").Select
Dim UltimaFila As Long
UltimaFila = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
ActiveSheet.Range("A" & UltimaFila & ":D" & UltimaFila).Copy
Sheets("hoja2").Select
Range("B" & Range("B" & Rows.Count).End(xlUp).Row + 1).PasteSpecial xlPasteValues
'2do rango
Sheets("Hoja1").Select
ActiveSheet.Range("G" & UltimaFila & ":J" & UltimaFila).Copy
Sheets("hoja2").Select
Range("H" & Range("H" & Rows.Count).End(xlUp).Row + 1).PasteSpecial xlPasteValues
'para quitar el modo de copiado
Application.CutCopyMode = False
End Sub

La instrucción Range("B" & Rows.Count) o en la otra línea con letra H, busca la primer fila libre de esa columna.

PD) Las macros se desarrollan a pedido. Si luego cambias las condiciones no siempre se puede responder en la misma consulta... Si más adelante necesitas realizar nuevos cambios debes abrir una nueva consulta.

Sdos

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas