Excluir ou Inserir Linhas com Base no Valor da Célula
In this Article
Este tutorial demonstrará como excluir ou inserir linhas com base nos valores das células.
Excluir Linha com Base no Valor da Célula
Isso fará um loop em um intervalo e excluirá as linhas se a coluna A indicar “apagar”.
Sub ExcluirLinhasPeloValorDaCelula()
'Declarar variáveis
Dim UltimaLinha As Long, PrimeiraLinha As Long
Dim Linha As Long
With ActiveSheet
'Definir primeira e última linhas
PrimeiraLinha = 1
UltimaLinha = .UsedRange.Rows(.UsedRange.Rows.Count).Row
'Loop através das linhas (de baixo para cima)
For Linha = UltimaLinha To PrimeiraLinha Step -1
If .Range("A" & Linha).Value = "apagar" Then
.Range("A" & Linha).EntireRow.Delete
End If
Next Linha
End With
End Sub
Devemos iniciar o loop com a linha inferior porque a exclusão de uma linha deslocará os dados, ignorando as linhas se o loop for feito de cima para baixo.
Além disso, observe que, em vez de inserir manualmente a última linha, calculamos a última linha usada.
Excluir Linha – Com Base no Filtro
No exemplo anterior, percorremos as linhas, excluindo cada linha que atende aos critérios. Como alternativa, podemos usar o AutoFiltro do Excel para filtrar as linhas com base em alguns critérios e, em seguida, excluir as linhas visíveis.
Sub Filtrar_E_Excluir_Linhas()
'Declarar a variável ws
Dim ws As Worksheet
Set ws = ActiveSheet
'Redefinir os filtros existentes
On Error Resume Next
ws.ShowAllData
On Error GoTo 0
'Aplique o filtro
ws.Range("a1:d100").AutoFilter Field:=1, Criteria1:="apagar"
'Excluir linhas
Application.DisplayAlerts = False
ws.Range("a1:d100").SpecialCells(xlCellTypeVisible).Delete
Application.DisplayAlerts = True
'Limpar filtro
On Error Resume Next
ws.ShowAllData
On Error GoTo 0
End Sub
Excluir Linha com Base em Critérios de Célula
Isso fará um loop em um intervalo, excluindo linhas se a célula na coluna A atender a determinados critérios (< 0):
Sub ExcluirLinhasPeloValorDaCelula()
'Declarar variáveis
Dim UltimaLinha As Long, PrimeiraLinha As Long
Dim Linha As Long
With ActiveSheet
'Definir primeira e última linhas
PrimeiraLinha = 1
UltimaLinha = .UsedRange.Rows(.UsedRange.Rows.Count).Row
'Loop através das linhas (de baixo para cima)
For Linha = UltimaLinha To PrimeiraLinha Step -1
If .Range("A" & Linha).Value < 0 Then
.Range("A" & Linha).EntireRow.Delete
End If
Next Linha
End With
End Sub
Excluir Linha se a Célula Estiver em Branco
Isso fará um loop em um intervalo, excluindo uma linha se uma célula na coluna A estiver em branco:
Sub ExcluirLinhasPeloValorDaCelula()
'Declarar variáveis
Dim UltimaLinha As Long, PrimeiraLinha As Long
Dim Linha As Long
With ActiveSheet
'Definir primeira e última linhas
PrimeiraLinha = 1
UltimaLinha = .UsedRange.Rows(.UsedRange.Rows.Count).Row
'Loop através das linhas (de baixo para cima)
For Linha = UltimaLinha To PrimeiraLinha Step -1
If .Range("A" & Linha).Value = "" Then
.Range("A" & Linha).EntireRow.Delete
End If
Next Linha
End With
End Sub
Excluir Linha em Branco
Como alternativa, se quiser excluir uma linha se a linha inteira estiver em branco (clique no link para ver um método ligeiramente diferente), você pode usar este código
Sub ExcluirLinhasEmBranco()
'Declarar as variáveis
Dim UltimaLinha As Long, PrimeiraLinha As Long
Dim Linha As Long
With ActiveSheet
'Definir a primeira e a última linha
PrimeiraLinha = 1
UltimaLinha = .UsedRange.Rows(.UsedRange.Rows.Count).Row
'Loop através das linhas (de baixo para cima)
For Linha = UltimaLinha To PrimeiraLinha Step -1
If WorksheetFunction.CountA(.Rows(Linha)) = 0 Then
.Rows(Linha).EntireRow.Delete
End If
Next Linha
End With
End Sub
Excluir Linha se a Célula Contiver Valor
Isso fará um loop em um intervalo, excluindo uma linha se a célula na coluna A não estiver em branco:
Sub ExcluirLinhaPeloValorDaCelula() 'Declarar as variáveis Dim UltimaLinha As Long, PrimeiraLinha As Long Dim Linha As Long With ActiveSheet 'Definir a primeira e a última linha PrimeiraLinha = 1 UltimaLinha = .UsedRange.Rows(.UsedRange.Rows.Count).Row 'Percorrer as linhas (de baixo para cima) For Linha = UltimaLinha To PrimeiraLinha Step -1 If .Range("A" & Linha).Value <>""
Then .Range("A" & Linha).EntireRow.Delete End If Next Linha End With End Sub
Inserir Linha com Base no Valor da Célula
Isso fará um loop em um intervalo, inserindo linhas se uma determinada célula nessa linha disser “inserir”.
Sub InserirLinhaConformeValorCelula()
'Declarar as variáveis
Dim UltimaLinha As Long, PrimeiraLinha As Long
Dim Linha As Long
With ActiveSheet
'Defina a primeira e a última linha
PrimeiraLinha = 1
UltimaLinha = .UsedRange.Rows(.UsedRange.Rows.Count).Row
'Percorrer as linhas (de baixo para cima)
For Linha = UltimaLinha To PrimeiraLinha Step -1
If .Range("A" & Linha).Value = "inserir" Then
.Range("A" & Linha).EntireRow.Insert
End If
Next Linha
End With
End Sub