Suprimir Filas vacías

En una hoja de excel anoto el trabajo del mes, los datos me ocupan 9 columnas y 31 fila,
las cuales se encuentran en el rango A8:R38, deseo por medio de una macro me elimine las filas vacías, teniendo como referencia la columna O8:O38 que es la sexta columna desde el comienzo del rango o sea que cuando en la columna O exista alguna celda vacías elimine toda la fila del rango, y los datos restante los pegue a partir de A60.
Gracias espero tu respuesta

1 respuesta

Respuesta
sub_eliminaVacias()
dim f1 as long
for f1=8 to 38
if cells(f1, 15).value="" then Rows(f1).Delete ' el 15 se refiere a la columna o
next f1
end sub
Y los datos restante los pegue a partir de A60., no me es clara
Te aclaro con la macro cumplimento una hoja y tomo los datos de esta hoja que yo la denomino "Diario", en la col.1 por medio de fórmula figura el nº, en la col.2 también con fórmula el día, en la col. 3 hora de salida, en la 4 hora de llegada en la 5 recorrido realizado, en la 6 que es la columna "O" figuran los Kmos., en la 7 la E.S. donde tomo el carburante, en la col. 8 el importe y en la 9 los litros repostados.
La función de la macro es copiar el rango ("A8:R38") y pegarlo en A60 y eliminando las filas que en la columna 6 no existan Kmos.
Necesariamente deben de aparecer A60 el nº, el día, H/salida, H/llegada, recorrido y Kmos. Y los datos del repostaje que no todos los días aparecen, anteriormente funcionaba en el rango ("A10:R40") y utilizaba la macro siguiente:
ActiveWindow.LargeScroll Down:=-1
Selection.AutoFilter Field:=1, Criteteria1:=">0", Operator:=xlAnd
Range ("A10:R40"). Select
Selection.Copy
Range ("A60"). Select
ActiveSheet.Paste
Application.CutCopyMode=False
ActiveWindow.SmallScroll Down:=-9
Selection.AutoFilter Field:=1
End Sub
Al añadir una columna más, aunque he modificado el rango a copiar no me funciona me da error en Selection.AutoFilter Field:=1, Criteria1:=">0", Operator:=xlAnd.
Espero que esto te pueda ayudar gracias.
Bueno no se mi aclaración anterior la has entendido en todo caso y con el fin de aclarártelo más el tema simplificando es el siguiente.
Copiar el rango A8:R38, pegarlo en A60 y buscar las celdas vacías de la columna O8:38 y que se eliminen las filas en que se encuentran las celdas vacías.
Vuelvo a intentar facilitarte el trabajo, después de mucho probar casi lo he conseguido
la macro que más adelante te indico me realiza la función que deseo, me copia el rango
A8:R38 y me lo pega en A60 eliminando las filas vacías, solamente se produce un error
si se dada la circunstancia que el día 1 del mes= fila A8:R8 no hay datos no me elimina las celdas A8 y B8 que siempre tienen datos, también la deja sin eliminar la primera si en vez de un día son varios días y consecutivos vacíos siempre deja sin eliminar la primera fila, solamente la elimina si el día 1 tiene datos la celda O8
Range("A8:R38").Select
Selection.AutoFilter
Selection.AutoFilter Field:= 1,Criteria1:="<>"
Range("A8:R38").Select
Selection. Copy
Range("A60").Select
ActiveSheet.Paste
Application.CutCopyMode=False
Selection.AutoFilter
If[A60]=""Then
Range("A60:R60").Select
Selection.Delete Shift:=xlUp
End If
End Sub
Espero que esto te facilite tu respuesta, gracias
Imagino que la rutina que enuncias la obtuviste con la grabadora de macros. Es una buena opción
Intenta con esta y me cuentas
sub_eliminaVacias()
dim f1,f2,c1 as long
f2=60
for f1=8 to 38
if cells(f1, 15).value="" then ' el 15 se refiere a la columna O que es el criterio que se evalua
Rows(f1).Delete
else
for c1=1 to 30
cells(f2, c1).value=cells(f1, c1).value
next c1
f2=f2+1
end if
next f1
end sub
No me funciona, me destroza toda la hoja, y al pegarlos datos no elimina las filas vacías
Gracias por todo
S ideseas me envias el archivo y lo reviso
[email protected]
Te agradezco el interés que as puesto, ya solucione el tema con la siguiente macro:
Range ("O7:O38"). Select
Selection. Autofilter
Selection. Autofilter Field:=1 Criteria1:="<>"
Range ("A8:R38").Select
Selection.Copy
Range("A60").Select
ActiveSheet.Paste
Application. CutCopyMode =False
Selection. AutoFilter Field:=1
Selection-AutoFilter
End Sub
Con todo gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas