請測試看看,謝謝
Sub test()
Dim xR As Range, xU As Range
For Each xR In Range("a5:a" & [a65536].End(3).Row).Rows
If InStr(xR, "TEXT") Then GoTo 99
If InStr(xR, "TA") Then GoTo 99
If xU Is Nothing Then Set xU = xR Else Set xU = Union(xR, xU)
99: Next
If Not xU Is Nothing Then xU.EntireRow.Delete
End Sub
刚才看了一下 sam-wang 老师的代码,感觉就是凡含“TEXT” 和“TA”的都保留,其他的均删除,所以,点多少次含“TEXT” 和“TA”的都不会再删除,我的代码是根据你的要求,删除含"TA"上一行的数据,没有考虑上一行是不是含"TA",又没有考虑是否含“TEXT”,就是第一次运行,如果上一行含"TA"也会删除,如果只是保留含“TEXT” 和“TA”的数据,反而容易了。但看代码,数据多了的话, sam-wang 老师的代码运行速度应该更快,我也是新手,对xU Is Nothing Then Set xU = xR用法不熟悉,还要好好学习啊。