Excel シートのデータをループするために使用しているかなり単純なコードがあります。基本的に、150,000 行を超えるデータがあり、「Instrument Failure」を含む行を除くすべての行を削除したいと考えています。失敗)。これが私のコードです:
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
ステップスルーしてこれを確認しましたが、動作します。ただし、「IF」が真になるたびにコードを中断しても、中断間の時間は非常に長いようです (20,000 セルをチェックするのにおそらく 5 分)。コードを中断せずに実行すると、まだ完了していません (コンピューターがフリーズします)。コードに何か欠けている、または非効率的ですか? どんな助けでも大歓迎です!