感谢您的阅读和帮助!
我有一个我无法弄清楚的简单问题。
在A栏中,我有以下1至20的值。
Sub remove()
Dim i As Long
For i = 1 To 20
If Left(Cells(i, "A"), 2) <> "EV" Then
Cells(i, "A").EntireRow.Delete
Else
End If
Next i
End Sub
我的下面的公式应该是看A列..如果左边2个字符&lt;&gt;则删除整行。 “EV”。
无论出于何种原因,一旦找到一次迭代,它就完全停止,不会转到下一行。如果可以的话请帮忙。我知道我可能错过了一些非常愚蠢的东西。谢谢!
data
答案 0 :(得分:0)
我不会使用删除整行。我会将数据向上移动一行,然后清除最后一行的内容。
Sub remove()
Dim i As Long
Dim x As Long
Dim lastCol As Long
Dim lastRow As Long
Const dataColumn As Long = 1
Const SearchPhrase As String = "EV"
Const firstRow As Long = 1
lastCol = Cells(firstRow, Columns.Count).End(xlToLeft).Column
lastRow = Cells(Rows.Count, dataColumn).End(xlUp).Row
x = 0
For i = lastRow To firstRow Step -1
If Left(Cells(i, dataColumn), Len(SearchPhrase)) <> SearchPhrase Then
If i = lastRow Then
Range(Cells(lastRow, dataColumn), Cells(lastRow, lastCol)).ClearContents
Else
Range(Cells(i, dataColumn), Cells(lastRow - 1 - x, lastCol)).Value = _
Range(Cells(i + 1, dataColumn), Cells(lastRow - x, lastCol)).Value
Range(Cells(lastRow - x, dataColumn), Cells(lastRow - x, lastCol)).ClearContents
End If
x = x + 1
End If
Next i
End Sub