Macro para Excluir Linhas com Critério

Estava navegando pelo fórum da Microsoft Technet onde me deparei com a postagem de um usuário solicitando ajuda, onde precisa de uma Macro para excluir linhas…

A partir deste contexto decidi trazer a discussão aqui para o site, afinal é algo que certamente que vale abrir discussão com a finalidade de todos aprendermos e nos desenvolvermos.

A postagem trás não só um código simples, como também um código com a possibilidade de excluir a linha com critérios baseados em duas colunas, com o intuito de lhe ajudar assim temos a situação abaixo.

Tenho uma planilha em Excel 2010 com várias colunas e valores bem variados. Como esta planilha tem 50.000 linhas, fazendo um filtro para selecionar as linhas que tem determinado valor para excluí-las é muito pesado e trava o Excel.

Gostaria de uma macro que fizesse automaticamente isso sem eu precisar fazer os filtros manualmente para excluir essas linhas, é possível?

 

Ex. 1: Gostaria de excluir todas as linhas que contém o valor “5” na coluna “C”

Ex. 2: Outra macro que verificasse 2 valores, excluir as linhas que contém o valor “2” na coluna “B” e o valor 4 na coluna “E”.

 

Obrigado

É muito comum termos de excluir linhas em uma quantidade muito grande devido ao processamento que isso exige e também a grande quantidade de filtros que aplicamos esta ser uma tarefa árdua…

Com o VBA as coisas ficam mais fáceis, rápidas, dinâmicas e divertidas, veja abaixo…

O que este código faz? Macro para excluir linhas ?

Macro Excluir Linha

Macro Excluir Linha

Ele faz um Loop na “Plan1”, ou seja ele percorre todas as linhas da “Plan1” até identificar a última linha da Planilha e verificando o conteúdo sinalizado na coluna “C”, linha por linha.

Caso o dado da linha que está percorrendo for o 5 como resultado ele exclui a linha, caso contrário a verificação é falsa e a rotina parte para a checagem do dado da próxima linha, é importante destacar que a exclusão será feita sempre que o dado a da linha e coluna forem iguais ao dado que se está validando.

 

 

1 – Excluir linhas com determinado valor em determinada coluna.

Sub Exemplo1()
    Dim lLin As Long
    
    Application.ScreenUpdating = False
    
    'Altere o nome da planilha abaixo:
    With Sheets("Plan1")
        For lLin = .Cells(.Rows.Count, "C").End(xlUp).Row To 2 Step -1
            If .Cells(lLin, "C") = 5 Then .Rows(lLin).Delete
            
            'Desafoga os processos pendentes do Windows a cada 100 linhas iteradas:
            If lLin Mod 100 = 0 Then DoEvents
        Next lLin
    End With

    Application.ScreenUpdating = True
End Sub

CONFIRA TAMBÉM: Como exportar um gráfico como imagem no excel

2 – Excluir linhas com critérios diferentes em duas colunas.

Sub Exemplo2()
    Dim lLin As Long
    
    Application.ScreenUpdating = False
    
    'Altere o nome da planilha abaixo:
    With Sheets("Plan1")
        For lLin = .Cells(.Rows.Count, "B").End(xlUp).Row To 2 Step -1
            If .Cells(lLin, "B") = 2 And .Cells(lLin, "E") = 4 Then
                .Rows(lLin).Delete
            End If
            
            'Desafoga os processos pendentes do Windows a cada 100 linhas iteradas:
            If lLin Mod 100 = 0 Then DoEvents
        Next lLin
    End With

    Application.ScreenUpdating = True
End Sub

Em conclusão, este código ajudará muito que precisa fazer a exlusão de linhas por VBA.

Caso você precise de ajuda para implementar este código ou precise de algum código fique a vontade para comentar ou me enviar um e-mail.

Caso você tenha alguma sugestão de postagem ou variação do código acima de tal foma que queira compartilhar, fique a vontade e nos envie!

Um abraço!

Douglas Godoy

Créditos ao código postado pelo amigo Felipe Gualberto no fórum social.technet.microsoft.com

 




.

Sobre o Autor

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *