Excel: excluir linha se a condição de célula vazia for verdadeira em várias colunas

1

Eu tenho um conjunto de dados no Excel que eu preciso filtrar as linhas onde não existem dados (ou seja, célula vazia). Não é tão fácil quanto excluir uma linha que tenha uma célula vazia em uma coluna, mas se houver células vazias em três colunas, a linha inteira deve ser excluída. Qual macro seria necessária para executar isso?

Por favor, aconselhe.

    
por Paul 09.03.2015 / 20:46

1 resposta

1

Veja um exemplo em que as colunas que você deseja verificar são A , B e C .

Option Explicit
Sub DeleteIfBlanks()
    Dim r As Long
    Dim rng As Range
    With ActiveSheet
        For r = 1 To .UsedRange.Rows.Count
            If LenB(.Cells(r, 1)) = 0 Then
            If LenB(.Cells(r, 2)) = 0 Then
            If LenB(.Cells(r, 3)) = 0 Then
                If rng Is Nothing Then Set rng = .Cells(r, 1) Else Set rng = Union(rng, .Cells(r, 1))
            End If
            End If
            End If
        Next
        If Not rng Is Nothing Then rng.EntireRow.Delete
    End With
End Sub

Você precisa alterar a instrução LenB(.Cells(r, 1)) para que 1 corresponda ao número da coluna que você deseja verificar em branco.

Para outras pessoas do VBA que estão por aí: Eu aninho minhas declarações IF para a melhoria muito menor da velocidade potencial. Eu união apenas a primeira célula e rollup para wholeerow no final porque eu sou preguiçoso e eu sei notação celular melhor do que a notação de linha. Se houver melhorias que sejam funcionais e não apenas estilísticas, me avise.

    
por 09.03.2015 / 21:13