Excel - Uma macro para excluir linhas com valores específicos

O Microsoft Excel é uma das ferramentas mais úteis para brincar com números. Nos casos em que um grande número de linhas ou colunas está envolvido, o Excel também possui a estrutura básica visual que pode ser usada para gravar ou gravar macros personalizadas . As macros VBA permitem que os usuários automatizem o processo com uma entrada mínima do usuário. Essas macros podem ser personalizadas para trabalhar em valores ou linhas específicos. O usuário também pode personalizar quais devem ser os intervalos inicial e final para valores ou linhas específicos. Todas essas opções aumentam o uso do Excel como um aplicativo de manipulação de dados .

  • Questão
  • Solução
  • Observe que

Questão

Basicamente, o que eu tenho é uma folha cheia de informações sobre diferentes departamentos e o que eu quero fazer é excluir todas as linhas, EXCETO as linhas que contêm alguns valores especificados (que gostaria de inserir na execução do script).

Digamos que na coluna que nomeia o departamento (na minha planilha chamada "Avd"), eu gostaria que o script procurasse por qualquer célula que não contenha, por exemplo, os números 1, 3, 5, 6 ou 21. e assim por diante (eu tenho cerca de 36 números diferentes).

Solução

Tudo o que você precisa fazer é destacar as informações na coluna e, em seguida, executar a macro a seguir. Haverá uma caixa que solicitará que você selecione o valor que deseja manter. Isso está disponível para até 30.000 linhas.

 Sub DeleteRows () Dim strToDelete Como String Dim rngSrc Como Range Dim NumRows As Integer Dim ThisRow As Integer Dim ThatRow As Integer Dim ThisCol As Integer Dim J Como Integer Dim DeletedRows As Integer strToDelete = InputBox ("Valor para Trigger Keep, Jason ??? ? ", " Excluir linhas ") Definir rngSrc = ActiveSheet.Range (ActiveWindow.Selection.Address) NumRows = rngSrc.Rows.Count ThisRol = rngSrc.Row ThatRow = ThisRow + NumRows - 1 EstaCol = rngSrc.Column Dim topRows As Integer Dim bottomRows As Integer bottomRows = 30000 Para J = ThisRow To NumRows Passo 1 Se Células (J, ThisCol) = strToDelete Então 'Linhas (J) .Selecionar topRows = J Sair Para DeletedRows = DeletedRows + 1 End If Próximo J For J = (topRows + 1) To NumRows Step 1 Se Cells (J, ThisCol) strToDelete Então 'Rows (J) .Selecione bottomRows = J Exit Para' DeletedRows = DeletedRows + 1 End If Next J Se topRows 4 Then ActiveSheet.Range (Cells (4, 1), Células (topRows - 1, 52)). Selecione Selection.delete Shift: = xlUp End If ActiveSheet.Range (Células (bottomRows - topRows + 4, 1), Células (30000, 52)). Selecione Selection.delete Shift: = xlUp 'MsgBox "Número de linhas excluídas:" & DeletedRows End Sub 

Observe que

Obrigado ao Jason por esta dica no fórum.

Artigo Anterior Próximo Artigo

Principais Dicas