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

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

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

Por exemplo, na coluna HI há múltiplas entradas, algumas começando com letras, outras começando com números. Quero excluir todas as linhas onde 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, 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 planilhas da pasta de trabalho. Eu tentei Do/Loop, mas ele funciona indefinidamente (e para de responder). Como sei quantas planilhas existem, preciso inserir um comando simples no código?

Responder1

Como é que isso funciona? (Presumo que o código que você postou esteja funcionando conforme o esperado e só precise executá-lotodosfolhas.)

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 planilha, certificando-se de redefinir a última variável da linha. Em seguida, girando o cálculo/atualização da tela até o final. Observe que se você tiver mais de 200 folhas, isso pode levar algum tempo.

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

Responder2

Obrigado pela 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

informação relacionada