Excel 2013 - Excluindo uma linha com base em uma referência de célula específica

3

Estou tentando descobrir como excluir uma linha no Excel 2013, onde o conteúdo de uma célula começa com um número.

E.G. Na coluna H eu tenho várias entradas, algumas começando com letras, algumas começando com números. Desejo excluir todas as linhas em que o conteúdo da célula na coluna H começa com um número.

Qualquer orientação / conselho seria recebido com gratidão!

Ok, então criei um pouco de código VBA que parece funcionar em uma única planilha:

Sub Macro_01()
Dim L As Long, i As Long
L = Cells(Rows.Count, "F").End(xlUp).Row
For i = L To 1 Step -1
    If Left(Cells(i, "F"), 1) Like "[0-9]" Or Cells(i, "F") = "" Then
        Rows(i).Delete
    End If
Next
End Sub

Estou tentando descobrir como fazer isso funcionar em todas as 284 folhas da pasta de trabalho. Eu tentei Do / Loop, mas ele apenas executa indefinidamente (e pára de responder). Porque eu sei quantas folhas existem, existe um comando simples que eu preciso digitar no código?

    
por Deadite 19.06.2017 / 14:39

2 respostas

0

Obrigado pela sua ajuda até agora, acho que resolvi:

Sub Macro_01()
ActiveSheet.Next.Select
Do
Dim L As Long, i As Long
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
L = Cells(Rows.Count, "F").End(xlUp).Row
For i = L To 1 Step -1
If Left(Cells(i, "F"), 1) Like "[0-9]" Or Cells(i, "F") = "" Then
Rows(i).Delete
End If
Next
Next ws
If ActiveSheet.Index <> Sheets.Count Then
ActiveSheet.Next.Select
Else
Exit Do
End If
Loop
End Sub
    
por 20.06.2017 / 12:54
0

Como isso funciona? (Eu estou supondo que o código que você postou em si está funcionando como você espera e só precisa executá-lo em todas folhas ).

Sub Macro_01()

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

Dim L As Long, i As Long
Dim ws      As Worksheet

For Each ws In ActiveWorkbook.Worksheets
    L = .Cells(Rows.Count, "F").End(xlUp).Row
    For i = L To 1 Step -1
        If Left(.Cells(i, "F"), 1) Like "[0-9]" Or .Cells(i, "F") = "" Then
            .Rows(i).Delete
        End If
    Next
Next ws

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Basta percorrer cada folha, certificando-se de redefinir a última variável de linha. Então giro de cálculo / screenupdating até o final. Note que se você tiver mais de 200 folhas, isso pode levar algum tempo.

Por fim, lembre-se de executar isso em uma cópia dos seus dados primeiro, como você sabe, não é possível desfazer uma macro.

    
por 19.06.2017 / 16:40