Excel: Excluir linha se a célula em determinada coluna estiver em branco?

23

Eu sou um novato completo no Excel, então, desculpe-me se isso é algo fácil de fazer. Procurei muitas opções, mas não consegui encontrar o que precisava.

Basicamente, quero excluir todas as linhas que não contêm um valor na coluna C. Como eu faria isso?

No momento, estou fazendo isso manualmente para mais de 5000 produtos e isso está me deixando louco.

John
fonte
2
Por que uma pergunta feita no Stack OverFlow com soluções VBA foi migrada para Superusuário?
brettdj

Respostas:

31

Você pode fazer isso muito rapidamente se as células estiverem realmente em branco usando SpecialCells

Manual

  • Selecionar coluna C
  • Pressione F5, entãoSpecial
  • Verifique Blanks, então OK(veja esta etapa na foto na parte inferior)
  • Exclua as linhas que estão selecionadas agora (por exemplo, clique com o botão direito do mouse na seleção> Excluir células ... > Linha inteira ou através da faixa de opções (consulte a segunda captura de tela))

VBA

Sub QuickCull()
    On Error Resume Next
    Columns("C").SpecialCells(xlBlanks).EntireRow.Delete
End Sub

Captura de tela mostrando o menu Ir para especial -> Espaços em branco Captura de tela mostrando como usar a faixa de opções para excluir linhas inteiras na seleção

brettdj
fonte
8

Aqui está um método manual fácil

  1. Aplique um Auto Filterna sua planilha
  2. Filtrar na coluna Em Cbranco
  3. Selecione todas as linhas visíveis
  4. Excluir linhas
  5. Remover filtro

Esse processo pode ser automatizado com o VBA, se necessário. Tente executar o gravador de macro para começar

Chris Neilsen
fonte
Simples, mas eficaz. Maravilhas do trabalho!
Tiana987642
2

Eu acho que a coisa mais fácil supondo que você não tenha várias outras fórmulas nas outras células é apenas classificar tudo pela coluna C e excluir todas as linhas que estiverem em branco na coluna C (a função de classificação colocará os valores em branco para a coluna C na parte superior do arquivo).

Em suma:

  • Clique na célula de papel dobrada acima da célula marcada com "1" e à esquerda da célula marcada com "A" (para destacar tudo)
  • Clique em Dados e, em seguida, classifique
  • Classifique pela coluna C e faça com que os menores valores sejam os primeiros
  • Apenas destaque as linhas para baixo até atingir a primeira linha com um valor para a Coluna C e exclua tudo o que destacou

fonte
0

Isso deve funcionar.

Columns("C:C").Select
Set rngRange = Selection.CurrentRegion
lngNumRows = rngRange.Rows.Count
lngFirstRow = rngRange.Row
lngLastRow = lngFirstRow + lngNumRows - 1
lngCompareColumn = ActiveCell.Column
For lngCurrentRow = lngLastRow To lngFirstRow Step -1
If (Cells(lngCurrentRow, lngCompareColumn).Text = "") Then _
Rows(lngCurrentRow).Delete
Next lngCurrentRow
usuario
fonte
-1

Você pode colocar esse código no Módulo de planilha (clique com o botão direito do mouse na guia Planilha e selecione "Visualizar código"):

Sub Delete_Blank_Rows()


'Deletes the entire row within the selection if the ENTIRE row contains no data.

'We use Long in case they have over 32,767 rows selected.

Dim i As Long
Dim LastRow As Integer

'We turn off calculation and screenupdating to speed up the macro.

 With Application
     .Calculation = xlCalculationManual
     .ScreenUpdating = False

     'Reduce the work on the calc and define the range

     LastRow = Range("A" & Rows.Count).End(xlUp).Row
     Range("A2:A" & LastRow).Select

     'We work backwards because we are deleting rows.

     For i = Selection.Rows.Count To 1 Step -1
          If WorksheetFunction.CountA(Selection.Rows(i)) = 0 Then
              Selection.Rows(i).EntireRow.Delete
          End If
     Next i

    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
End With

End Sub
David
fonte
11
Isso exclui linhas em que a linha inteira está em branco? -se sim, é semelhante à resposta @drnewman. A pergunta especifica especificamente: Exclua a linha se a célula em determinada coluna estiver em branco.
22715 Davidenko
Bem-vindo ao Super Usuário! Por favor, leia a pergunta novamente com atenção. Sua resposta não responde à pergunta original.
DavidPostill