Copiar celdas llenas de un rango a otra hoja

Tengo un libro con 2 hojas(formato y base), lo que quiero es copiar solo las celdas "llenas" del rango B7:G26 (FORMATO) y las pegue en otra hoja (BASE)en el rango E7:E:26 y en la primera fila vacía que encuentre y así consecutivamente, sin embargo me copia y pega todo el rango aunque tenga celdas vacías.
Ya que no siempre se llena todo el rango, a veces se llenan 2, 3, 5 filas o todas.
Si lleno dos filas de ese rango, solo que se copien y peguen esas dos filas, si lleno 3 igual y así. Solo las celdas o filas llenas de este rango
B   C   D   F   G
1   f     f    f    f
2   h   h   h   h
3
4
5
6
.
Sub paseDatos()
libre = Sheets("BASE").Range("b65536").End(xlUp).Row + 1
Sheets("FORMATO").Range("B7:G26").Copy
Worksheets("BASE").Cells(libre, 2).PasteSpecial Paste:=xlPasteValues, SkipBlanks _
:=True
Sheets("FORMATO").Range("E7:E26") = ""
MsgBox ("DATOS GUARDADOS EXITOSAMENTE :)")
End Sub

1 respuesta

Respuesta
1
Necesitas contemplar cuál es la última fila con datos, para eso debes decidir cuál es la col que siempre estará completa (aunque el resto de la fila quizás no). Para el ejemplo tomé la col C
Sub paseDatos()
libre = Sheets("BASE").Range("b65536").End(xlUp).Row + 1
ultima= Sheets("FORMATO").Range("C65536").End(xlup).Row
Sheets("FORMATO").Range("B7:G" & ultima).Copy

Worksheets("BASE").Cells(libre, 2).PasteSpecial Paste:=xlPasteValues, SkipBlanks _
:=True
Sheets("FORMATO").Range("E7:E26") = ""
MsgBox ("DATOS GUARDADOS EXITOSAMENTE :)")
End Sub
Hola de nuevo...
Muchas gracias por tu ayuda pero me sigue haciendo lo mismo :(
te paso el link del archivo por si gustas revisarlo por favor
http://www.mediafire.com/file/jjmtdwmyqmr/FUNCIONA.xls
saludos
Es porque tu col C tiene fórmula, tenés que evaluar una col con 'datos', en tu ejemplo vi que podría ser la E.
Entonces reemplazá en la siguiente línea la letra C por E:
ultima= Sheets("FORMATO").Range("E65536").End(xlup).Row
PD) Para que la rutina esté óptima, debieras controlar si hay datos o no para copiar y al final quitar el modo de copiado. Además parece que la limpieza debiera incluir la col F
Sub paseDatos()
libre = Sheets("BASE").Range("b65536").End(xlUp).Row + 1
ultima = Sheets("FORMATO").Range("E65536").End(xlUp).Row
'si no hay datos cancela el proceso
If ultima < 7 Then Exit Sub

Sheets("FORMATO").Range("B7:G" & ultima).Copy
Worksheets("BASE").Cells(libre, 2).PasteSpecial Paste:=xlPasteValues, SkipBlanks _
:=True
Sheets("FORMATO").Range("E7:F26") = ""
'para quitar el modo de copiado
Application.CutCopyMode = False

MsgBox ("DATOS GUARDADOS EXITOSAMENTE :)")
End Sub
Sdos
Elsa
PD) Te invito a descargar las demos e índices de contenido de mis manuales de Programación y 400MacrosPlus. Encontrarás ejemplos para descargar.
http://aplicaexcel.galeon.com/manuales.htm

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas