Optimización código borrar columnas

Hola Elsa

Nuevamente preguntando es posible optimizar el siguiente código

Application.ScreenUpdating = False
Dim LastRow As Long, r As Long
LastRow = ActiveSheet.UsedRange.Rows.Count
For r = LastRow To 1 Step -1
If UCase(Cells(r, 57).Value) = "AI" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "AT" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "AU" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "CRV" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "E2" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "E5" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "E6" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "E7" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "EXI" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "EXN" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "G3" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "H1" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "H2" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "G3" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "LD" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "LDE" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "LI" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "LIE" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "M1" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "P1" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "P2" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "RA" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "SAL" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "SG" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "TC" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "TI" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "TP" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "TSD" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "TSI" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "TT" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "X1" Then Rows(r).Delete
If UCase(Cells(r, 57).Value) = "Z1" Then Rows(r).Delete
Application.ScreenUpdating = False
Next r

Funciona bien pero con el tiempo crece con nuevas variables y alenta la macro

parte del problema es que tiene mas de 25000 registros y llega hasta la columna FE

Agradeciendo de antemano su ayuda

Saludos

Raúl Carmona

1 respuesta

Respuesta
1

Se hace interminable, porque controlás siempre la misma celda.

Si Cells(r, 57) = "AI" entonces ya no tomará ninguno de los otros valores,... no hace falta consultar.

Podrías colocar a continuación de cada Delete : Goto sigo

Por ej:

If UCase(Cells(r, 57).Value) = "AI" Then Rows(r).Delete : Goto sigo

If UCase(Cells(r, 57).Value) = "AI" Then Rows(r).Delete : Goto sigo

'así con todas


Y luego antes de Next r agregá:;

Sigo:

Armala, probala y comentame.

Mi Querida Elsa

Como siempre te doy las gracias por tu ayuda, listo la diferencia es notable

Estupendo

Un Abrazo enorme

Raúl Carmona

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas