如何定位以“结束”结尾的单元格值;净额;并在Excel VBA中删除行
我有一个程序,它在D列中查找任何值以“net”结尾的单元格,然后它将删除整行。但它不会删除值以“net”结尾的所有行。我没有主意了如何定位以“结束”结尾的单元格值;净额;并在Excel VBA中删除行,excel,vba,Excel,Vba,我有一个程序,它在D列中查找任何值以“net”结尾的单元格,然后它将删除整行。但它不会删除值以“net”结尾的所有行。我没有主意了 Sub DeleteRows_net() Application.ScreenUpdating = False Dim rng As Range For Each rng In Range("D4:D2700") If InStr(1, rng.Value, "net") > 0 Then rng.EntireRow.Delete End If Next
Sub DeleteRows_net()
Application.ScreenUpdating = False
Dim rng As Range
For Each rng In Range("D4:D2700")
If InStr(1, rng.Value, "net") > 0 Then
rng.EntireRow.Delete
End If
Next rng
End Sub
这是很常见的错误。。。当您循环删除时,您必须从最后一个元素开始,并将方向指向第一个元素。将循环更改为:
Dim i%
For i=2700 to 4 Step -1
If InStr(1, Cells(i, "D").Value, "net") > 0 Then
Cells(i, "D").EntireRow.Delete
End If
Next i
顺便说一下。。。不要忘记将
Application.screenUpdate=True
放在过程结束前的某个地方 比法拉利F12更快。你的解决方案非常有效。非常感谢。不客气。。。你可以把它标记为解决了,不打扰其他有帮助的人。我正在努力克服的一个小小的补充。我添加了一个子字符串来搜索“net”和“com”,但它不起作用。如果InStr(1,单元格(i,“D”).Value,“net”,“com”)>0,则更改为:如果InStr(1,单元格(i,“D”).Value,“net”)>0或InStr(1,单元格(i,“D”).Value,“com”)>0,则问题已解决。再次感谢你,我感谢你的帮助。