Excel VBA-循环未正确删除表中的最后一行

Excel VBA-循环未正确删除表中的最后一行,vba,excel,excel-2007,Vba,Excel,Excel 2007,我一直在处理一个宏,如果表的a列中的值与另一个单独的B列中的值不匹配,该宏将删除表中的行。目前,我的代码没有正确删除最后一行,我一辈子都无法找出原因 这是我目前的代码: Sub Stuff() Dim rCell As Range, ColumnA As Range, ColumnB As Range Dim rowPoint As Integer Set ColumnA = ActiveWorkbook.Worksheets("Sheet1").Range("Tabl

我一直在处理一个宏,如果表的a列中的值与另一个单独的B列中的值不匹配,该宏将删除表中的行。目前,我的代码没有正确删除最后一行,我一辈子都无法找出原因

这是我目前的代码:

Sub Stuff()
    Dim rCell As Range, ColumnA As Range, ColumnB As Range
    Dim rowPoint As Integer

    Set ColumnA = ActiveWorkbook.Worksheets("Sheet1").Range("Table2[Column1]") 
    Set ColumnB = ActiveWorkbook.Worksheets("Sheet1").Range("Table1")

    rowPoint = ColumnA.Count

    On Error Resume Next

    For i = rowPoint To 1 Step -1
        For Each rCell In ColumnA
            If Application.CountIf(ColumnB, rCell.Value) = 0 Then rCell.Rows.Delete

        Next rCell
    Next i

End Sub

你说最后一行没有被正确删除是什么意思

它是否被删除并且格式有问题,或者最后一行根本没有被删除

如果是格式问题,那么您可以使用

If Application.CountIf(ColumnB, rCell.Value) = 0 Then rCell.Rows.Delete xlShiftUp

这将只删除该列中的单元格,并将已删除单元格下的行向上移动,而不更改其他列的结构。

i=>的
是什么。。。接下来我
循环打算怎么做
i
从不在循环体中引用,每个rCell的
。。。下一个rCell
循环本身似乎就足够了抱歉,我有点不知道这一点。之后我清理了一下脚本,这样它就可以在整个范围内正确地向后循环。它仍然随机留下一行不应该在那里的东西。但是android_新手关于xlShiftUp的评论让这个宏起作用了…尽管我还不完全清楚为什么。天哪,xlShiftUp把它钉在了头上。非常感谢。您知道,您可以使用SpecialCells@user2146675:如果此答案解决了您的问题,请单击复选标记将其标记为答案!