如果excel文件不包含某个单词,我试图删除行。
我遍历B列中的单元格并检查单元格值是否包含此字符串,如果没有,则将其删除。
但是,我收到错误消息范围类的删除方法失败。
Sub macro()
Dim i As Integer, intValueToFind As Integer
Dim ws As Worksheet
Set ws = Worksheets("RAW DATA (2)")
For i = 1 To 500 ' Revise the 500 to include all of your values
If InStr(Cells(i, 2).Value, "Error") = False Or InStr(Cells(i, 2).Value, "No credentials") = False Or InStr(Cells(i, 2).Value, "Connection Failed") = False Then
ws.Rows(i).EntireRow.Delete
End If
Next i
End Sub
答案 0 :(得分:0)
你正在混合你的方法。
'。EntireRow'是Range的属性,而不是Row。
所以你在哪里:
ws.rows(i).EntireRow.Delete
您应该输入类似的内容:
ws.Range("B"&i).EntireRow.Delete
但实际上,你可以用一个.Row方法来简化它,这只是删除。所以,你也可以说:
ws.rows(i).Delete
我已经测试了两者并确认语法是正确的;我看不到您的代码有任何其他问题。
答案 1 :(得分:0)
将所有字符串比较修改为更接近
If NOT InStr(1, " error no credentials connection failed ", lcase(Cells(i, 2).Value), vbTextCompare) Then
答案 2 :(得分:0)
自动过滤比循环更有效
Sub DeleteRows()
Sheet1.Range("a1:c35").AutoFilter Field:=2, Criteria1:="<>error"
Sheet1.UsedRange.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
Sheet1.UsedRange.AutoFilter
'repeat for each value
End Sub