VBA我的IF语句在找到一次迭代后结束

时间:2017-07-27 19:54:53

标签: excel vba excel-vba if-statement

感谢您的阅读和帮助!

我有一个我无法弄清楚的简单问题。

在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

1 个答案:

答案 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