Ir ao conteúdo

Posts recomendados

Postado

Boa noite .

 

Preciso criar uma macro excel para pesquisar diversas ocorrencias em uma planilha e excluir a linha inteira.

ex arquivo

 

MINISTERIO DA AGRICULTURA

TESTE DE EXCLUSAO

001 SEMPRE ESTOU AQUI

003 NUNCA ESTOU AQUI

 

Fazer um for no arquivo acima e excluir a linha inteira, com as ocorrencias que comecem com os titulos  MINISTERIO , 001 e 003

 

Grato.

  • Curtir 1
Postado

@Antonio Baptista   se for uma ocorencia em cada linha você pode usar um loop for com a quantidade de linhas e usar a função if / else para detectar a ocorrencia e em caso afirmativo use um outro for para deletar

                     ' exemplo de como deletar conteUdo da cElula
Option Explicit
Dim dblQtd As Double
                     
                     ' o que esta depois da vIrgula simples eh comentArio
Sub TesteA()
 Cells(1, 1) = "XYZ" ' escreve isso na cElula (A1) da planilha 1
 Call TesteB
 Debug.Print dblQtd  ' mostrar o valor da variável na janela do módulo
 Cells(1, 1) = ""    ' deleta o que estiver na cElula (A1) da planilha 1
End Sub

Sub TesteB()
 dblQtd = 900
End Sub

o que esteja nas células da dita cuja linha .  

e se você já tiver feito um código sobre esse exercício e puder / quiser ,, poste ele aqui e ajudaremos se ainda precisar   .  !

  • Curtir 1
Postado

@devair1010  Boa noite fiz o teste e funcionou,mas  não consigo colocar varias linhas ao mesmo tempo pra remover, imagine quer terei uma planilha de 500 linhas, com 30 ocorrencias para excluir, tipo excluir as palavras  segunda terca quarta quinta sexta sábado  e etc ?   terei que fazer um a um ?

 

Obrigado pelo apoio

  • Curtir 1
Postado

@Antonio Baptista Veja se assim resolve,

 

Sub ExcluiLinha()
    Dim Linha   As Long
    Dim Celula  As Range
    
    For Linha = ThisWorkbook.ActiveSheet.UsedRange.Rows.Count To 1 Step -1
        Set Celula = ThisWorkbook.ActiveSheet.Cells(Linha, 1)
        
        If Left(Celula.Value, Len("MINISTÉRIO")) = "MINISTÉRIO" _
        Or Left(Celula.Value, 3) = "001" _
        Or Left(Celula.Value, 3) = "003" Then
            Call Celula.EntireRow.Delete
        End If
    Next Linha
End Sub

 

  • Curtir 1
  • Obrigado 1
Postado

@Midori  Boa tarde , percebi que no meu arquivo de origem na frase esta um "linguicao"  ai ele não encontra a pesquisa , como faco no excel manual , faco o filtro e pesquiso se na linha contem ai da certo , mas como colocar nessa syntax isso .

 

Por exemplo se na coluna A  contem a palavra MINISTERIO então delete.

 

não sei se me expressei legal

 

Grato

  • Curtir 1
  • Solução
Postado

Não deletou porque tem um caractere no início e o critério é para testar se o dado começa com a palavra.

 

Apliquei a função Clean para tirar. Veja se assim resolve,

 

Sub ExcluiLinha()
    Dim Linha   As Long
    Dim Celula  As Range
    
    For Linha = ThisWorkbook.ActiveSheet.UsedRange.Rows.Count To 1 Step -1
        Set Celula = ThisWorkbook.ActiveSheet.Cells(Linha, 1)
        
        If Left(WorksheetFunction.Clean(Celula.Value), Len("MINISTÉRIO")) = "MINISTÉRIO" _
        Or Left(WorksheetFunction.Clean(Celula.Value), 3) = "001" _
        Or Left(WorksheetFunction.Clean(Celula.Value), 3) = "003" Then
            Call Celula.EntireRow.Delete
        End If
    Next Linha
End Sub

 

  • Curtir 1
  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...