|
Hola, "normalmente" filas vacias NO deberian de existir en nuestros datos, es decir, conforme se captura se agregan a la siguiente fila o cuando se elimina uno, se elimina la fila sin dejarla en blanco, por fila vacia entiendo un registro que no tenga ningun campo, las filas vacias complican el codigo innecesariamente, procura no dejarlas, la macro que te anexo hace lo siguiente...
Agrega una hoja nueva
Selecciona la Hoja1
Selecciona el rango de datos, aqui es muy importante que selecciones, incluyendo TODOS los datos, hasta tu ultimo datos, incluyendo las filas vacias
Ordeno por el primer campo, de hecho puede ser por el que sea, la finalidad de este ordenamiento es que deja las filas vacias al final
Seleciono la region actual, de esta forma ya NO selecciona las filas vacias
Copio esta selecciona a la nueva hoja
Hago lo mismo con las restantes hojas...
TU TAREA ES:
Ser mucho mas explicito en tus exposiciones
Cambiar los nombres de las hojas que yo uso Hoja1, Hoja2. etc, por los tuyos
Cambiar el rango que yo uso A1:A20 por el correcto que tu uses
Consultar la ayuda de Excel para dudas de alguna instruccion
Si no sabes incorporar esta macro a tu archivo, consultar mi pagina en donde explico como hacerlo...
Esta es la macro
Option Explicit
Public Sub CopiarDatos()
Dim HojaNueva As Worksheet
'Agregamos una nueva hoja
Set HojaNueva = Sheets.Add
'Seleccionamos la hoja 1
Sheets("Hoja1").Select
'Seleccionamos el rango de datos
Range("A1:C20").Select
'Ordeno por el primer campo
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'Copio la region actual a la nueva hoja
Range("A1").CurrentRegion.Copy HojaNueva.Range("A1")
'Seleccionamos la hoja 2
Sheets("Hoja2").Select
'Seleccionamos el rango de datos
Range("A1:C20").Select
'Ordenamos por el primer campo
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'Copiamos los datos de la fila 2 y hasta el ultimo dato y lo copiamos
'despues de la ultima fila en la hoja nueva
Range(Range("A2"), Range("A2").End(xlToRight).End(xlDown)).Copy HojaNueva.Range("A1").End(xlDown).Offset(1, 0)
'En La hoja 3 y 4 es el mismo procedimiento
Sheets("Hoja3").Select
Range("A1:C20").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range(Range("A2"), Range("A2").End(xlToRight).End(xlDown)).Copy HojaNueva.Range("A1").End(xlDown).Offset(1, 0)
Sheets("Hoja4").Select
Range("A1:C20").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range(Range("A2"), Range("A2").End(xlToRight).End(xlDown)).Copy HojaNueva.Range("A1").End(xlDown).Offset(1, 0)
Application.CutCopyMode = False
Set HojaNueva = Nothing
End Sub
|