O Excel 2010 apenas remove linhas em branco específicas

1

Usamos um aplicativo que gera uma visão geral financeira no Excel. (Usando o Excel 2010 no momento.) Por causa de alguma configuração naquele aplicativo, às vezes, ele gera 4 ou 5 linhas vazias entre os valores no Excel, onde queremos apenas uma única linha vazia. Não consigo usar uma macro porque essas linhas excessivas não têm o mesmo local sempre.

Estou tentando remover essas linhas em excesso, mas não quero removê-las. Linhas em branco únicas são boas e muito necessárias. Existe alguma fórmula que me ajudaria a remover as linhas extras em branco menos a linha em branco que deveria estar lá?

Espero que vocês possam me ajudar.

    
por Nessy D'Aglarele 16.02.2018 / 15:57

1 resposta

1

Para o seu primeiro critério, você pode contar quantas células em cada linha têm valores usando a função CountA() da planilha.

Snippet de código:

If .CountA(ws.rows(r)) = 0

Você só deseja excluir a linha se houver mais de uma linha vazia em sequência, então adicionamos isso à nossa declaração If...Then . Isso verifica a linha acima com r - 1 :

... And .CountA(ws.Rows(r - 1)) = 0

Isto verifica se a linha acima está em branco; somente se for, ele adicionará sua linha a um intervalo especial que acompanhará as exclusões de linha: delRng .

Este é o código do VBA inteiro:

Sub removeEmptySpaces()

    Dim r As Long, ws As Worksheet, delRng As Range
    Set ws = ThisWorkbook.Worksheets(1)

    With Application.WorksheetFunction
        For r = 2 To lastRow(ws)
            If .CountA(ws.Rows(r)) = 0 And .CountA(ws.Rows(r - 1)) = 0 Then
                If delRng Is Nothing Then
                    Set delRng = ws.Rows(r)
                Else
                    Set delRng = Union(ws.Rows(r), delRng)
                End If
            End If
        Next
    End With

    If Not delRng Is Nothing Then delRng.Delete

End Sub

Function lastRow(ws As Worksheet, Optional col As Variant = 1) As Long
    With ws
        lastRow = .Cells(.Rows.Count, col).End(xlUp).Row
    End With
End Function
    
por 16.02.2018 / 16:32