Macro para eliminar y filtrar

Tengo varios archivos de excel, todos con las mismas características y tengo que hacer el mismo trabajo en todos, no seria problema si fuesen pocos los archivos, pero al ser varios se me va a ser tedioso.

Lo que tengo que hacer es primero eliminar las filas donde la columna E dice "ND" y "NC" y luego eliminar las filas donde la columna M es distinta de 0, es decir que me queden solo las filas con el valor 'cero'.

Luego tengo que eliminar las columnas C-D-F-H-I-J-K-L-N-P-Q-S-V-W y luego desde AB hasta AW.

Nota: Los archivos tienen encabezados, o sea la eliminación de las filas tendría que ser desde la fila 2.

Saludoss y agradecido por cualquier ayuda!

2 respuestas

Respuesta
1

Me respondo solo, lo conseguí, pero seguramente debe haber un método mas rápido, porque como tengo unas 8mil filas en cada archivo con lo que escribi pasa celda por celda y comprueba el valor, entonces demora muchisimo en hacerlo.

Dejo lo que escribí, agradezco si alguien puede dar alguna información para hacerlo mas rápido.

Sub EliminarFilasYColumnas()
Range("E2").Select
Do While Not IsEmpty(ActiveCell)
If ActiveCell <> "FC" Then
Selection.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Range("m2").Select
Do While Not IsEmpty(ActiveCell)
If ActiveCell <> "0" Then
Selection.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Range("C:C,D:D,F:F,H:H,I:I,J:J,K:K,L:L,N:N,P:P,Q:Q,S:S,V:V,W:W,AB:AB,AC:AC,AD:AD,AE:AE,AF:AF,AG:AG,AH:AH,AI:AI,AJ:AJ,AK:AK,AL:AL,AM:AM,AN:AN,AO:AO,AP:AP,AQ:AQ,AR:AR,AS:AS,AT:AT,AU:AU,AV:AV,AW:AW").Select
Selection.Delete Shift:=xlToLeft
End Sub
Respuesta
1

Tu macro está bien, solamente agrega las líneas para evitar la actualización de la pantalla, prueba con lo siguiente:

Sub EliminarFilasYColumnas()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    '
    Range("E2").Select
    Do While Not IsEmpty(ActiveCell)
        If ActiveCell <> "FC" Then
            Selection.EntireRow.Delete
        Else
            ActiveCell.Offset(1, 0).Select
        End If
    Loop
    Range("m2").Select
    Do While Not IsEmpty(ActiveCell)
        If ActiveCell <> "0" Then
        Selection.EntireRow.Delete
        Else
        ActiveCell.Offset(1, 0).Select
    End If
    Loop
    Range("C:C,D:D,F:F,H:H,I:I,J:J,K:K,L:L,N:N,P:P,Q:Q,S:S,V:V,W:W,AB:AB,AC:AC,AD:AD,AE:AE,AF:AF,AG:AG,AH:AH,AI:AI,AJ:AJ,AK:AK,AL:AL,AM:AM,AN:AN,AO:AO,AP:AP,AQ:AQ,AR:AR,AS:AS,AT:AT,AU:AU,AV:AV,AW:AW").Select
    Selection.Delete Shift:=xlToLeft
    '
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
End Sub

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas