Macro para eliminar filas en blanco, con celdas consecutivas y no consecutivas.

Necesito una macro que elimine todas las filas donde las celdas estén en blanco, en el rango "A7:A60000"

, como en la imagen no todas las celdas son consecutivas.

Respuesta
1

Prueba esta macro, las celdas en blanco son eliminadas en un solo paso

Sub elimina_vacio()
filas = Range("a" & Rows.Count).End(xlUp).Row
col = Range("a6").currentregion.Columns.Count
Set datos = Range("a6").Resize(filas, col)
With datos
    .Sort key1:=Range(.Columns(1).Address), order1:=xlAscending, Header:=xlYes
End With
Set datos = Nothing
End Sub

1 respuesta más de otro experto

Respuesta
1

[Hola

Intenta del siguiente modo:

Sub BorrarFilas()
Dim UltimaFila As Long
Let UltimaFila = Cells(Rows.Count, 1).End(xlUp).Row
With ActiveSheet
    .Range("A1:A" & UltimaFila).AutoFilter Field:=1, Criteria1:="="
    .AutoFilter.Range.Offset(1).Resize(.Rows.Count - 1).EntireRow.Delete
    .Range("A1").AutoFilter
End With
End Sub

Es una forma más rápida que los bucles.

Saludos]

Abraham Valencia

Gracias Abraham,

Pero me da el siguiente error, me hace el filtro, pero no elimina las filas.

¿Cuál fue el mensaje exacto de error que te da? ¿Están vacías esas celdas o en realidad solo están en blanco producto de alguna fórmula?

Abraham Valencia

Se ha producido el error "1004" en tiempo de ejecución:

Error definido por la aplicación o el objeto 

No mencionaste lo que pregunté de las celdas ¿en blanco o vacías?

Abraham Valencia

Vacías Abraham, perdón!

Hummm, raro, coloca el archivo en algún "drive" y comparte por aquí el enlace para poder ver en directo el archivo.

Abraham Valencia

Abraham,

Perdón, pero veo que hay celdas vacías, y celdas que están en blanco pero que no muestra el contenido.

Saludos.-

Tal cual, celdas en blanco (con espacios y/u otras cosas) y celdas vacías. Prueba así:

Sub Borrarvacias()
Dim UltimaFila As Long
Dim Rng As Range
Let UltimaFila = Cells(Rows.Count, 1).End(xlUp).Row
ActiveSheet.Range("A3:H" & UltimaFila).AutoFilter Field:=1, Criteria1:="="
With ActiveSheet.AutoFilter.Range
    Set Rng = .Resize(.Rows.Count - 1, 1).Offset(1, 0)
    Rng.SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
ActiveSheet.Range("A1").AutoFilter
Set Rng = Nothing
End Sub

Saludos]

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas