Excel - Uma macro para excluir linhas com valores específicos
- 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.