Jump to content
Sign in to follow this  
Guest alvaro271194

REDUCIR MACRO

Recommended Posts

Hace 1 hora, alvaro271194 dijo:

PROGRAME ESTE MACRO

Si nos explicas qué quieres hacer lo mismo te podemos echar una mano. Mejor sube tu fichero de ejemplo con el antes y el después

Share this post


Link to post
Share on other sites
Guest alvaro271194

tengo una lista de trabajadores con alta 1 baja 1 reingreso 2 baja 2 y así sucesivamente 

lo que hace el macro es que el baja 1 me pone un filtro de bajas que se hicieron en 2017 hacia atrás y en reingreso 1 me pone un filtro que solo me ponga las que están en blanco, después me selecciona las filas filtradas y las elimina , y borra FILTROS.

luego vuelve ha hacer lo mismo solo que esta vez vuelve a poner el filtro de baja 1 menores a 2017, y pone filtro ahora con baja 2 menores a 2017 y reingreso 2 vacías, selecciona filas filtradas y las elimina Y BORRA LOS FILTROS

luego vuelve ha hacer lo mismo solo que esta vez vuelve a poner el filtro de baja 1 y baja 2 menores a 2017, y pone filtro ahora con baja 3 menores a 2017 y reingreso 3 vacías, selecciona filas filtradas y las elimina Y BORRA LOS FILTROS

y así sucesivamente.

la vdd no soy muy bueno programando macros, pero lo intente y funciono solo que son mas de 2000 linas las que tendria que escribir .

adjunto excel.

 

 

final - copia.xlsm CON REIGRESO 16.txt

Share this post


Link to post
Share on other sites
Guest alvaro271194
Hace 41 minutos , Haplox dijo:

Si nos explicas qué quieres hacer lo mismo te podemos echar una mano. Mejor sube tu fichero de ejemplo con el antes y el después

tengo una lista de trabajadores con alta 1 baja 1 reingreso 2 baja 2 y así sucesivamente 

lo que hace el macro es que el baja 1 me pone un filtro de bajas que se hicieron en 2017 hacia atrás y en reingreso 1 me pone un filtro que solo me ponga las que están en blanco, después me selecciona las filas filtradas y las elimina , y borra FILTROS.

luego vuelve ha hacer lo mismo solo que esta vez vuelve a poner el filtro de baja 1 menores a 2017, y pone filtro ahora con baja 2 menores a 2017 y reingreso 2 vacías, selecciona filas filtradas y las elimina Y BORRA LOS FILTROS

luego vuelve ha hacer lo mismo solo que esta vez vuelve a poner el filtro de baja 1 y baja 2 menores a 2017, y pone filtro ahora con baja 3 menores a 2017 y reingreso 3 vacías, selecciona filas filtradas y las elimina Y BORRA LOS FILTROS

y así sucesivamente.

la vdd no soy muy bueno programando macros, pero lo intente y funciono solo que son mas de 2000 linas las que tendria que escribir .

adjunto excel.

 

CON REIGRESO 16.txt final - copia.xlsm

Share this post


Link to post
Share on other sites

amigo @alvaro271194, sin datos es dificil comprobar si algo funciona o no, igualmente siempre es necesario colocar un ejemplo, sin embargo creo que esto hace lo que necesitas

Sub DE1A20MOV()
    Dim n As Integer
    Dim j As Integer
    
    Application.DisplayAlerts = False
    
    On Error Resume Next
    
    For j = 6 To 44 Step 2
        
        For n = 6 To j Step 2
            Range("A1").AutoFilter n, , xlFilterValues, Array(0, "12/31/2017", 0, "12/31/2016")
        Next n
        With Range("A1")
            .AutoFilter j + 1, "=", xlAnd
            Range(Cells(Rows.Count, .Column).End(xlUp), Cells(.Row + 1, Columns.Count).End(xlToLeft)).SpecialCells(12).Delete
            .AutoFilter
        End With
    Next j
    
    On Error GoTo 0

    Application.DisplayAlerts = True
 End Sub

Suerte, lo que realice fue simplemente RESUMIR tu macro, sin embargo seria cuestion de ver los datos y analizar si se puede hacer de otra manera

Share this post


Link to post
Share on other sites
Guest alvaro271194
Hace 4 horas, bigpetroman dijo:

amigo @alvaro271194, sin datos es dificil comprobar si algo funciona o no, igualmente siempre es necesario colocar un ejemplo, sin embargo creo que esto hace lo que necesitas


Sub DE1A20MOV()
    Dim n As Integer
    Dim j As Integer
    
    Application.DisplayAlerts = False
    
    On Error Resume Next
    
    For j = 6 To 44 Step 2
        
        For n = 6 To j Step 2
            Range("A1").AutoFilter n, , xlFilterValues, Array(0, "12/31/2017", 0, "12/31/2016")
        Next n
        With Range("A1")
            .AutoFilter j + 1, "=", xlAnd
            Range(Cells(Rows.Count, .Column).End(xlUp), Cells(.Row + 1, Columns.Count).End(xlToLeft)).SpecialCells(12).Delete
            .AutoFilter
        End With
    Next j
    
    On Error GoTo 0

    Application.DisplayAlerts = True
 End Sub

Suerte, lo que realice fue simplemente RESUMIR tu macro, sin embargo seria cuestión de ver los datos y analizar si se puede hacer de otra manera

Muchas gracias, funciono muy bien, si le quiero agregar mas altas solo cambio el 44 por la columna final vdd

Saludos

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×
×
  • Create New...

Important Information

Privacy Policy

Ayuda Excel - Madrid, Madrid, ES - Valorada por 6254 personas - Aprender Excel - Total: 4.7 / 5