VBA - La ejecución del código es extremadamente lenta

Tengo un código bastante simple que estoy usando para recorrer una hoja de datos de Excel. Básicamente, tengo más de 150,000 filas de datos y quiero eliminar todas las filas excepto las que tienen "Falla de instrumento", en cuyo caso quiero esa fila y la que está inmediatamente arriba y abajo (que puede contener detalles relacionados con el fracaso). Aquí está mi código:

Sub UnsignedFailure()
Application.ScreenUpdating = False
'Start point
Set r = Range("E1")

'Loop, total rows is a function, executes quickly
For t = 3 To TotalRows
    'Check for a failure
    k = InStr(1, r.Cells(t, 1).Value, "Instrument Failure")
    'Verify that it corresponds to a GC
    b = InStr(1, r.Cells(t, 1).Offset(0, -3).Value, "GC")
    If k <> 0 And b <> 0 Then
    'Skip two rows if it is true
        t = t + 2
    Else
    'Delete the previous row since this row is not a failure
        r.Cells(t - 1, 1).EntireRow.Delete
    'Go back a row to account for the deleted row
        t = t - 1
    End If
Next t

Application.ScreenUpdating = True
End Sub

He comprobado esto paso a paso y funciona. Sin embargo, incluso si el código se rompe cada vez que el "SI" es verdadero, el tiempo entre los descansos parece ser muy largo (tal vez 5 minutos para verificar 20,000 celdas). Si dejo que el código se ejecute sin interrupciones, aún tengo que completarlo (la computadora se congela). ¿Estoy perdiendo algo o siendo ineficiente en mi código? Cualquier ayuda sería muy apreciada!

Respuestas a la pregunta(1)

Su respuesta a la pregunta