none
Linhas – excluir a anterior, a própria e a seguinte RRS feed

  • 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.

    sábado, 2 de agosto de 2014 21:31

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
    

    domingo, 3 de agosto de 2014 17:57

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


    domingo, 3 de agosto de 2014 00:51
  • 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?


    domingo, 3 de agosto de 2014 16:21
  • 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
    

    domingo, 3 de agosto de 2014 17:57
  • OK Anderson. Agora a macro funcionou direto, sem adaptações.

    Obrigado!

    domingo, 3 de agosto de 2014 19:42