Se puede eliminar filas con colores en excel?

Hola amigos, la presente es para saber si se puede crear una macro que sea capaz de eliminar las filas que contengan colores, como las que estan en el ejemplo.

Respuesta
2

Yeison, el código de Sebas Torres es correcto hasta cierto punto. Espero que mi consejo le sirva a ambos. En estos casos de eliminar filas basadas en una condición, lo correcto es hacer el loop de atrás hacia alante. El código de Sebas funciona bien siempre y cuando no hayan dos filas consecutivas con color.

Si hay dos o mas filas juntas con color, siempre quedará una que no se borra. Este comportamiento se debe al movimiento por defecto que hace excel al borrar una celda, el movimiento natural es hacia arriba, y ese movimiento descoloca a la posición en el loop.

Para solucionarlo solo tienes que hacer el loop al revés, así:

For fila = ufila To 1 Step -1

Andy

2 respuestas más de otros expertos

Respuesta
1

Prueba con esta macro haber que tal...

Sub BorrarFilaColor()
ufila = Range("A" & Rows.Count).End(xlUp).Row
For fila = 1 To ufila
    If Not Cells(fila, 1).Interior.ColorIndex = xlNone Then
    Rows(fila).Delete
    End If
Next fila
End Sub

Esta elimina las filas con color desde la fila 1 hasta la ultima fila con datos, esa parte puedes modificarla si usas un rango fijo..

¡Gracias! Sebas, la macro funciona, sin-embargo haciendo un pequeño ajuste como el que propuso Andy quedo al 100%

Si yo sinceramente lo hice así porque no conocía que se podía hacer el loop al revés😅 ahora sabemos los 2 ja ja..

Respuesta
1

Prueba esta macro aplica un filtro por color y hace un borrado masivo de filas, sin importar si son uno o un millón, solo cambia los A1 de la por la celda donde comiencen tus datos y es toda la modificacion que tienes que hacer

Sub borrar_filas()
Application.DisplayAlerts = False
    With Range("a1").CurrentRegion
        .AutoFilter
        .AutoFilter Field:=2, Criteria1:=RGB(255, 255, 0), Operator:=xlFilterCellColor
        .Offset(1).Delete
        .AutoFilter
    End With
    Range("a1").Select
Application.DisplayAlerts = True
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas