Adicionar e apagar linhas faz parte das tarefas quotidianas comuns quando se trabalha com o Excel.
Embora se possa fazer isto facilmente a partir da própria folha de trabalho, por vezes pode querer usar a rota VBA para apagar linhas no Excel. Estas podem ser apagar uma linha específica, múltiplas linhas na selecção, apagar linhas alternativas ou aquelas que têm um valor específico no mesmo.
Neste tutorial, mostrar-lhe-ei como apagar linhas no Excel usando VBA (cenários múltiplos).
Então vamos começar!
Esta Tutorial Cobre:
Apagar uma linha inteira usando VBA
Para apagar uma linha inteira no Excel usando VBA, é necessário usar o EntireRow.Delete method.
Por exemplo, se quiser apagar a primeira linha inteira de uma folha de trabalho, pode usar o código abaixo:
Sub DeleteEntireRow()Rows(1).EntireRow.DeleteEnd Sub
O código acima especifica primeiro a linha que precisa de ser apagada (o que é feito especificando o número entre parênteses) e depois usa o EntireRow.Método de eliminação para eliminar.
É possível também eliminar várias linhas especificando estas linhas no código.
Por exemplo, o código abaixo irá eliminar as linhas número 1, 5 e 9 na folha de trabalho:
Sub DeleteEntireRow()Rows(9).EntireRow.DeleteRows(5).EntireRow.DeleteRows(1).EntireRow.DeleteEnd Sub
O código acima usa a mesma lógica, onde especifica os números das linhas e o Excel irá eliminar estas linhas uma a uma.
Apagar todas as linhas na Selecção
No caso de querer apagar todas as linhas num intervalo seleccionado de células, pode usar o código macro VBA abaixo:
Sub DeleteEntireRow()Selection.EntireRow.DeleteEnd Sub
O código acima aplica-se a EntireRow.Delete method to the entire selection.
Delete Alternate lines (or Delete Every Third/Fourth/Nth Row)
Sometime, pode obter uma descarga de dados onde cada segunda fila (ou terceira, quarta ou enésima fila) é inútil e precisa de ser apagada.
P>Diava trabalhar com dados financeiros onde cada segunda linha estava vazia e tinha de ser apagada.
Este é o tipo de cenário onde o VBA realmente brilha.
Below é o código VBA que irá percorrer todas as linhas da selecção e apagar cada segunda linha:
Sub DeleteAlternateRows()RCount = Selection.Rows.CountFor i = RCount To 1 Step -2 Selection.Rows(i).EntireRow.DeleteNext iEnd Sub
Deixe-me explicar como funciona este código VBA.
P>Primeiro, utilizei uma RCount variável para obter o número total de filas na selecção.
Então, utilizei um For Next loop para executar isto tantas vezes quantas as filas lá existentes. Por exemplo, se houver 12 linhas, este laço irá correr de 12 a 1 (ou seja, 12 vezes). É importante executar isto da última linha na selecção para a primeira, pois não queremos que os números das linhas mudem quando uma linha é apagada.
Também, o Passo -2 é usado, uma vez que precisamos de apagar todas as outras linhas (de baixo para cima). No caso de querer apagar cada terceira linha, pode usar -3.
Com o laço VBA, usei o método Selection.Rows(i).EntireRow.Delete para apagar cada linha alternativa.
Delete Blank Rows with VBA
P>Tambem pode usar o método EntireRow.Delete method to delete all blank lines.
Below é o código VBA que irá seleccionar células em branco no conjunto de dados seleccionado e apagar a linha inteira.
Sub DeleteBlankRows()Selection.SpecialCells(xlCellTypeBlanks).EntireRow.DeleteEnd Sub
O código acima usa a propriedade SpecialCells para seleccionar e apagar todas as células que estão em branco. Este é o mesmo método que também nos permite usar a caixa de diálogo ‘Go To Special’ para seleccionar todas as células em branco.
Após estas células em branco serem identificadas usando SpecialCell, estas são depois apagadas usando o método EntireRow.Delete.
Eliminar linhas com uma Palavra/Valor Específico
Também se pode usar um código VBA simples para percorrer cada célula no intervalo seleccionado e eliminar todas as linhas em que uma célula contém um texto ou valor específico.
Por exemplo, suponha que tem um conjunto de dados e eu quero apagar todas as células que têm o texto Impressora na coluna 2 da selecção.
Below é o código que fará isto:
Sub DeleteRowswithSpecificValue()For i = Selection.Rows.Count To 1 Step -1If Cells(i, 2).Value = "Printer" ThenCells(i, 2).EntireRow.DeleteEnd IfNext iEnd Sub
O código acima conta primeiro o número total de linhas na selecção. Isto assegurará que o laço é executado apenas estas muitas vezes. Depois utiliza o ‘For Next loop’ para percorrer todas as células da Coluna 2.
A declaração IF THEN ELSE é então utilizada para verificar o valor em cada célula da coluna 2. E no caso do valor/texto corresponder ao texto especificado (que é ‘Impressora’ neste exemplo).
Neste exemplo, verifiquei se o texto corresponde ou não a uma string específica. Também o pode fazer com valores. Por exemplo, pode apagar todas as linhas onde o valor de venda é inferior a 1000 ou superior a 1000.
Nota: Uma coisa importante a notar aqui é que o laço corre de Selection.Rows.Count To 1 para garantir que quando uma linha é apagada, não tem impacto nas linhas acima dela.
Como utilizar este código VBA
Agora deixe-me mostrar-lhe como utilizar todos os códigos mencionados neste tutorial para apagar a linha inteira.
P>Precisa de copiar e colar estes códigos num módulo do Editor Excel VB. Uma vez copiados estes códigos, pode então executar os códigos macro.
Below são os passos para copiar e colar estes códigos VBA num módulo:
- Pega na tecla ALT e carrega na tecla F11 (ou Função + Opção + F11 em Mac). Isto abrirá o Editor VB
- No Editor VB, terá o explorador do projecto à esquerda. Se não o vir, vá à opção Ver e depois clique em Project Explorer.
- li>Clique com o botão direito do rato em qualquer objecto no Project Explorer (para a pasta de trabalho em que deseja executar o código).
- Vá a Inserir e depois clique em Module. Isto irá inserir um novo Módulo para a pasta de trabalho
- Copiar e colar os códigos acima no módulo.
E para executar estes códigos, pode colocar o cursor em qualquer parte do código (que deseja executar) e carregar na tecla F5 (ou clicar no triângulo verde na barra de ferramentas VBA).
Eu também escrevi um tutorial detalhado sobre diferentes formas de executar códigos de macro VBA no Excel.
Então, estes foram alguns códigos VBA que pode utilizar para apagar linhas inteiras no Excel (em diferentes cenários). A mesma lógica também pode ser aplicada caso pretenda apagar colunas em vez de linhas (com o ajustamento correspondente nos exemplos de código).
Espera que este tutorial seja útil!
p>Pode também gostar dos seguintes tutoriais do Excel:
- Excel VBA Autofilter: Um guia completo com exemplos
- Delete Rows Based on a Cell Value (or Condition) in Excel
- Insira uma linha em branco após cada linha no Excel (ou cada Nth Row)
- Como Desfazer Rapidamente COLUMNS no Excel