Eliminar fila si cumple dos condiciones

Necesito una macro que elimine las filas que en la columna "A" sea = 1 pero que también en la columna "M" <> Penaliza, es decir si no se cumplen las condiciones pues no borra esa fila por ejemplo si en "A" =1 pero "M" = Penaliza, entonces no borra la fila, esto necesito hacerlo como 4000 veces!

1 respuesta

Respuesta
1
A ver si entendí bien tu pregunta para poderte ayudar, prueba este código y si algo no funciona dímelo:
Sub elimina()
    Range("A1").Select
    While ActiveCell.Value <> ""
continuar:
        dato = ActiveCell.Value
        If ActiveCell.Value = 1 Then
            ActiveCell.Offset(0, 12).Select
            If ActiveCell.Value <> "Penaliza" Then
                ActiveCell.Offset(0, -12).Select
                ActiveCell.EntireRow.Delete
            Else
                ActiveCell.Offset(0, -12).Select
                ActiveCell.Offset(1, 0).Select
            End If
GoTo continuar
        End If
    ActiveCell.Offset(1, 0).Select
    Wend
End Sub
En caso de que esto resuelva tu pregunta por favor te pido calificar y cerrar la pregunta
Hola mi estimado, esta muy bien, pero el problema es que cuando se encuentra en "A" una celda vacía, para el proceso, y mi tabla tiene en ese campo celdas vacías, en lgunos casos, por eso necesito que la operación se repit como 4000 veces sin importar que durante el proceso encuentre una celda vacía, gracias!
Ah es que eso no lo comentaste al principio de la pregunta por eso la ayuda no se brinda de la manera más eficiente. Bueno en ese caso a ver intenta con este código a ver si te sirve más.
Sub elimina()
    Range("A65536").End(xlup).Select
    Activecell.offset(1,0).Select
    Activecell.Value="Stop"
    Range("A1").Select
    While ActiveCell.Value <> "Stop"
continuar:
        dato = ActiveCell.Value
        If ActiveCell.Value = 1 Then
            ActiveCell.Offset(0, 12).Select
            If ActiveCell.Value <> "Penaliza" Then
                ActiveCell.Offset(0, -12).Select
                ActiveCell.EntireRow.Delete
            Else
                ActiveCell.Offset(0, -12).Select
                ActiveCell.Offset(1, 0).Select
            End If
GoTo continuar
        End If
    ActiveCell.Offset(1, 0).Select
    Wend 
Activecell.Value=""
End sub
EXCELENTE! Ya quedo muchísimas gracias y ahora abusando je je
tengo la siguiente macro:
              Range("D1").Select
    Do While ActiveCell.Value <> ""
        dato = ActiveCell
        BANCOS.Activate
        Range("H2").Select
        Do While ActiveCell.Value <> ""
                      If Int(ActiveCell) = Int(dato) Then
                Dato1 = ActiveCell.Offset(0, -4)
                Dato2 = ActiveCell.Offset(0, 0)
                Windows("PRUEBA DE MACRO.xls").Activate
                ActiveCell.Offset(0, 2) = Dato1
                ActiveCell.Offset(0, 3) = Dato2
                Exit Do
            End If
            ActiveCell.Offset(1).Select
                    Loop
        Windows("PRUEBA DE MACRO.xls").Activate
        ActiveCell.Offset(1).Select
            Loop
Lo que hace es buscar un dato del libro sepsa en bancos, cuando lo encuentra, copia ese dato más otra celda de aun lado y lo pega en sepsa, y así como con 3000 datos más, lo que quiero ver es si es posible que cuando encuentre el dato en bancos, una vez que copie y pegue, elimine esa fila de bancos, y siga con el proceso, es decir si el dato que estoy buscando de SEPSA, esta en la fila 11 de BANCOS, ya que copio el dato y lo pego en SEPSA, borre la fila de BANCOS y siga con el proceso.
Espero haberme explicado bien
Muchas muchas gracias! Y saludos
Si te ayudo pero te pido un favor, cierra y califica esta pregunta (hoy no estamos al 2x1) y lanzame esta pregunta como nueva ¿te parece bien?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas