VBA exclui linhas quando há espaços em branco

0

Sou novato em VBA, por isso encontro dificuldades na minha tarefa.

Eu tenho um excel com 2500 linhas e três colunas A, B, C.
Eu preciso excluir a linha inteira somente se o valor na coluna C estiver em branco . Eu procurei perguntas semelhantes, mas elas não se aplicam à minha tarefa.

Eu encontrei este código, mas não faz o trabalho para o meu caso:

Sub DeleteBlankRows1()

'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 

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

With Application
    .Calculation = xlCalculationManual
    .ScreenUpdating = False

'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

Eu preferiria fazer isso com o VBA, enquanto eu tenho que fazer isso por 50 arquivos excel todos os dias.

Alguma ideia de fazer isso?

    
por evita_agr 03.11.2016 / 15:22

1 resposta

2

Você fez o comentário que está pedindo ajuda

Estou assumindo que a última linha é sempre 2500 como por seu post (se não, este post mostra como obter a última linha )

Em seguida, você percorre cada linha, começando pela última linha.

Se a linha tiver um valor na coluna C, não faça nada. Caso contrário, exclua-o.

Alerta de spoiler: como fazer Com comentários para explicar o que está fazendo

Sub doIt()    
 Dim MyRange As Range
 Dim lngLastRow As Long    
    Set MyRange = Range("A:C") ' grab the range    
    lngLastRow = Cells(Rows.Count, MyRange.Column).End(xlUp).Row  ' grab the last value, swap it for 2500        
    Dim i As Integer        
    For i = lngLastRow To 1 Step -1 ' loop through, starting at the last column        
        If Range("C" & i).Value = "" Then ' test if there is not a value
            Rows(i).EntireRow.Delete   'delete!
        End If        
    Next i
End Sub
    
por 03.11.2016 / 16:47