测试机器以两种不同的速度测试零件:50和200 rpm。机器以每个速度输出每个部件的数据,以便
第1行=第1部分,转速为50 rpm 第2行=第2部分,转速为200 rpm 第3行=第2部分,转速为50 rpm 第4行=第2部分,转速为200 rpm
等约23,000个零件。
如果某个部件编号因特定速度而失败,则数据会显示" n.i.O。"在该行的H列中,但它只显示该速度。我试图写一个宏来检查一行是否包含" n.i.O。" value,然后删除该行,并删除其他速度的行。这是我到目前为止的代码:
Sub DeleteFailures()
Dim r As Long
Dim lastrow As Long
lastrow = Cells(Rows.Count, "A").End(xlUp).Row
For r = 1 To lastrow
If Cells(r, "H").Value = "n.i.O." Then
If Cells(r, "E").Value = "50" Then
Rows(r + 1).EntireRow.Delete
Rows(r).EntireRow.Delete
ElseIf Cells(r, "E").Value = "200" Then
Rows(r - 1).EntireRow.Delete
Rows(r).EntireRow.Delete
End If
Else
End If
Next
End Sub
这似乎并不想为我工作。我认为问题可能是每次删除时都会跳过一行,但我不确定。还有另一种方法可能更好吗?
答案 0 :(得分:0)
这正是你思考的原因。为了使它工作,你应该从底部循环:
For r = lastrow To 1 Step -1
我认为整个For
循环块应该如下所示(已更改ElseIf
部分):
For r = lastrow To 1 Step -1
If Cells(r, "H").Value = "n.i.O." Then
If Cells(r, "E").Value = "50" Then
Rows(r + 1).EntireRow.Delete
Rows(r).EntireRow.Delete
ElseIf Cells(r, "E").Value = "200" Then
Rows(r).EntireRow.Delete
Rows(r - 1).EntireRow.Delete
r = r - 1
End If
Else
End If
Next