Macro que elimine rango de filas vacias

18/11/2004 - 16:12 por dataVariabel | Informe spam
Saludos, necesito saber como hacer una macro que me elimine las filas o
rango de filas en blanco de una lista(variable en tamaño 11, 25, 35 filas
etc) y la agrupe una detras de la otra.
ejemplo.
A B C
1
2 xxx1 zzz2 rrr1
3
4
5
6 wtw ppp 000
7
8
9
10
11 qqq m12 999

A B C
1 xxx1 zzz2 rrr1
2 wtw ppp 000
3 qqq m12 999
realice esta, pero sólo me elimina una fila cada vez, asi que tengo que
ejecutarla varias veces para obtener el resultado deseado
Sub eliminaFilasenBlanco()
Set r2 = Range("a4:a150")
For n = 1 To r2.Rows.Count
Sheets("Hoja1").Select
If r2.Cells(n, 1) = "" Then ' si la fila esta vacia, eliminala
Set currentCell = r2.Cells(n, 1)
currentCell.EntireRow.Delete Shift:=xlUp
End If
Next n
End Sub
Atentamente : Jairo
 

Leer las respuestas

#1 David
18/11/2004 - 17:04 | Informe spam
Cambiemos un poco tu código. Tal vez sea más largo, pero
es una solución que te funcionará bien.

Primero:
De tu código, deduzco que una fila se ha de eliminar si
la celda de la columna A está vacía. Entonces, el código
podría ser:

Sub eliminaFilasenBlanco()
ActiveCell.SpecialCells(xlLastCell).Select
ff = ActiveCell.Row
Application.Goto Reference:="R1C1"
f = 0
While f = 0
If ActiveCell.Value = "" Then
Selection.EntireRow.Delete
ff = ff - 1
Else
ActiveCell.Offset(1, 0).Range("A1").Select
End If
n = ActiveCell.Row
If n > ff Then f = 1
Wend
End Sub

Ahora, si necesitas analizar más de una celda, por
ejemplo, las primeras 5 celdas de la fila, podrías
utilizar el siguiente código:

Sub eliminaFilasenBlanco2()
ActiveCell.SpecialCells(xlLastCell).Select
ff = ActiveCell.Row
Application.Goto Reference:="R1C1"
f = 0
While f = 0
bl = 0
For j = 1 To 5
If ActiveCell.Value <> "" Then bl = bl + 1
ActiveCell.Offset(0, 1).Range("A1").Select
Next
ActiveCell.Offset(0, -5).Range("A1").Select

If bl = 0 Then
Selection.EntireRow.Delete
ff = ff - 1
Else
ActiveCell.Offset(1, 0).Range("A1").Select
End If
n = ActiveCell.Row
If n > ff Then f = 1
Wend
End Sub

Si necesitas analizar un número diferente de celdas,
observa la línea del For, y la línea inmediatamente
siguiente a Next, puedes cambiar el 5 por el número que
quieras en ambas.

Saludos.


Saludos, necesito saber como hacer una macro que me


elimine las filas o
rango de filas en blanco de una lista(variable en tamaño


11, 25, 35 filas
etc) y la agrupe una detras de la otra.
ejemplo.
A B C
1
2 xxx1 zzz2 rrr1
3
4
5
6 wtw ppp 000
7
8
9
10
11 qqq m12 999

A B C
1 xxx1 zzz2 rrr1
2 wtw ppp 000
3 qqq m12 999
realice esta, pero sólo me elimina una fila cada vez,


asi que tengo que
ejecutarla varias veces para obtener el resultado deseado
Sub eliminaFilasenBlanco()
Set r2 = Range("a4:a150")
For n = 1 To r2.Rows.Count
Sheets("Hoja1").Select
If r2.Cells(n, 1) = "" Then ' si la fila esta vacia,


eliminala
Set currentCell = r2.Cells(n, 1)
currentCell.EntireRow.Delete Shift:=xlUp
End If
Next n
End Sub
Atentamente : Jairo


.

Preguntas similares