Usuário com melhor resposta
Linhas – excluir a anterior, a própria e a seguinte

Pergunta
-
Preciso de uma macro para deletar linhas da planilha.
A palavra “Colégio” aparece diversas vezes na coluna A da planilha.
A macro deverá:
Na coluna A da planilha, a macro irá procura a palavra “Colégio”, que servirá de parâmetro.
Ao encontra-la , a macro irá deletar a linha que esta logo acima dela.
Depois ira deletar as três linhas imediatamente seguintes da linha com a palavra Colégio
E finalmente irá deletar a própria linha que contem a palavra Colégio.
Assim sucessivamente com todas as linhas que contiverem a palavra Colégio e suas respectivas linhas conforme descrevi acima.
Agradeço a ajuda.
Respostas
-
Sub ExcluirLinhas2() Dim intervalo As String Dim lastLine, i As Long lastLine = Range("A" & Rows.Count).End(xlUp).Row For i = 1 To lastLine intervalo = "A" & i - 1 & ":A" & i + 3 If Sheets("Plan1").Range("A" & i) = "Colégio" Then Sheets("Plan1").Range(intervalo).EntireRow.Delete End If Next i End Sub
- Sugerido como Resposta Anderson F. Diniz domingo, 3 de agosto de 2014 17:58
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator segunda-feira, 4 de agosto de 2014 21:24
Todas as Respostas
-
Boa Noite Oscar,
Veja se a rotina abaixo lhe auxilia na execução da sua tarefa.
Sub EXCLUIR() ' variável de início dos dados linha = 1 ' percorre os dados até encontrar vazio Do While Cells(linha, "a") <> "" ' testa se é o critério If Cells(linha, "a") = "Colégio" Then 'seleciona a linha anterior ao critério e as 3 próximas Range(Cells(linha - 1, "a"), (Cells(linha + 3, "a"))).Select ' deleta a linha Selection.Delete ' desincremento linha = linha - 2 End If ' incremento linha = linha + 1 Loop End Sub
Abraço- Editado Jhonatan Franklin domingo, 3 de agosto de 2014 00:52
-
Caro Jhonatan e Anderson.
Obrigado por criarem as macros. A duas funcionaram.
Mas tive que fazer uma pequena adaptação, pois nas duas macros o While funciona até encontrar uma célula vazia na coluna A.
Ocorre que a minha coluna A além de conter células com "Colégio", ela também tem muitas células vazias.
E ai a macro era interrompida.
A minha adaptação foi inserir uma nova coluna A, na qual numerei as células de 1 à 2828.
Assim a coluna A atende o While até o fim da planilha.
No restante dos códigos, onde tinha A alterei para B, e os códigos funcionaram como eu preciso.
Mas só por curiosidade, será possível fazer a macro, com uma coluna A contendo células vazias e sem a necessidade de inserir uma nova coluna A totalmente preenchida ?
Ou a macro inserir a nova coluna A e numerá-la, com eu fiz manualmente?
- Editado Oscar A D Jung domingo, 3 de agosto de 2014 16:24
-
Sub ExcluirLinhas2() Dim intervalo As String Dim lastLine, i As Long lastLine = Range("A" & Rows.Count).End(xlUp).Row For i = 1 To lastLine intervalo = "A" & i - 1 & ":A" & i + 3 If Sheets("Plan1").Range("A" & i) = "Colégio" Then Sheets("Plan1").Range(intervalo).EntireRow.Delete End If Next i End Sub
- Sugerido como Resposta Anderson F. Diniz domingo, 3 de agosto de 2014 17:58
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator segunda-feira, 4 de agosto de 2014 21:24
-