Excel 使用“如果”以在末尾删除时进行多项选择

Excel 使用“如果”以在末尾删除时进行多项选择,excel,vba,Excel,Vba,我有以下两列(简化) 我想要一个基本上通过第一列的代码,如果它是权益,则删除该行 我的想法(就for循环而言): 我注意到的问题是,只有最后一个要选择的单元格被删除。我本以为我在循环中选择的所有单元格都会被选中。是否有特定的方法选择多个。(Union在这种情况下不起作用,因为列表将是动态的) 通常在删除行时,您会从底部开始,然后逐步向上删除 Sub Button2_Click() Dim LstRw As Long, x LstRw = Cells(Rows.Count, "A

我有以下两列(简化)

我想要一个基本上通过第一列的代码,如果它是
权益
,则删除该行

我的想法(就for循环而言):


我注意到的问题是,只有最后一个要选择的单元格被删除。我本以为我在循环中选择的所有单元格都会被选中。是否有特定的方法选择多个。(
Union
在这种情况下不起作用,因为列表将是动态的)

通常在删除行时,您会从底部开始,然后逐步向上删除

Sub Button2_Click()
    Dim LstRw As Long, x

    LstRw = Cells(Rows.Count, "A").End(xlUp).Row

    For x = LstRw To 1 Step -1

        If Cells(x, "A").Value = "Equity" Then

            Cells(x, "A").EntireRow.Delete

        End If

    Next x

End Sub

要将工作表中的活动减至最少,请尝试这样做

Sub Button2_Click()
    Dim DeleteRange As Range
    Dim LstRw As Long, x As Long

    LstRw = Cells(Rows.Count, "A").End(xlUp).Row

    For x = 1 To LstRw

        If Cells(x, "A").Value = "Equity" Then

            If DeleteRange Is Nothing Then
                Set DeleteRange = Rows(x)
            Else
                Set DeleteRange = Union(DeleteRange, Rows(x))
            End If

        End If

    Next x

    If Not (DeleteRange Is Nothing) Then
        DeleteRange.EntireRow.Delete
    End If

End Sub
也不需要向后循环,因为删除是在最后完成的

Sub Button2_Click()
    Dim LstRw As Long, x

    LstRw = Cells(Rows.Count, "A").End(xlUp).Row

    For x = LstRw To 1 Step -1

        If Cells(x, "A").Value = "Equity" Then

            Cells(x, "A").EntireRow.Delete

        End If

    Next x

End Sub
Sub Button2_Click()
    Dim DeleteRange As Range
    Dim LstRw As Long, x As Long

    LstRw = Cells(Rows.Count, "A").End(xlUp).Row

    For x = 1 To LstRw

        If Cells(x, "A").Value = "Equity" Then

            If DeleteRange Is Nothing Then
                Set DeleteRange = Rows(x)
            Else
                Set DeleteRange = Union(DeleteRange, Rows(x))
            End If

        End If

    Next x

    If Not (DeleteRange Is Nothing) Then
        DeleteRange.EntireRow.Delete
    End If

End Sub