
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