Como Eliminar Filas marcadas como eliminar en la columna I

Estoy haciendo una formula en la columna I, la cual el resultado es "En Proceso" o "Eliminar". Quisiera conocer el código para eliminar todas las filas identificadas como Eliminar.

Estoy utilizando el siguiente código actualmente, pero este me presenta dos problemas; el primero es que se tarda mucho en ejecutar, ya que valida fila a fila y pueden ser varios miles de registros y el segundo es que me deja registros sin eliminar y no entiendo porque.

For i = 1 To 5
fila = 2
Do While Range("a" & fila) <> ""
If Range("I" & fila) = "Eliminar" Then
Rows(fila).Select
Selection.Delete Shift:=xlUp
End If
fila = fila + 1
Loop

Next i

1 Respuesta

Respuesta
1

[Hola

En general siempre seleccionar (Usar Select) vuelve a los procesos más lentos y no es recomendable hacerlo:

https://abrahamexcel.blogspot.com/2017/12/el-uso-y-abuso-de-select-y-selection-en.html 

Y si bien una la solución a tu caso sí pasa por un usar un bucle, en general es mejor usa "For - Next" (O For - Each, dependiendo del caso) que "Do While - Loop" (o cualquiera del tipo Loop) yo te sugeriré una forma que es incluso un poco más rápida:

Suponiendo que será la hoja activa y que los datos comienzan en "A1", entonces usa esto:

With ActiveSheet
    .Range("A1").AutoFilter Field:=9, Criteria1:="Eliminar"
    . AutoFilter. Range. Offset(1). Resize(. Rows. Count - 1). EntireRow.Delete
    . Range("A1"). AutoFilter
End With

Comentas

Abraham Valencia

PD: Si aún así algunos "Eliminar" quedan, al ser productos de fórmulas quizá no son exactamente "Eliminar" sino quizá " Eiminar" o "Eliminar " o etc. (¿se nota la diferencia?)

¡Hola Abraham, Muchas Gracias!

Funciono muy bien, te cuento que ya me había fijado si ponía el Eliminar de distintas formas, y no era así, es por esto que no sabia que sucedía.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas