Excel 逐行删除,如果单元格H=单元格I,则删除整行

Excel 逐行删除,如果单元格H=单元格I,则删除整行,excel,vba,Excel,Vba,如果单元格H1=单元格I1,则删除整行。然后下一行,单元格H2,单元格I2,保留。然后是下一排 如果行的两个单元格相同,我想删除整行。我搜索了,这是最接近我想要实现的,并修改了代码 Sub CellAequalCellB () Dim ws As Worksheet Dim rng As Range Dim lastRow As Long Set ws = ThisWorkbook.Sheets("Sheet1") lastRow = ws.Range

如果单元格H1=单元格I1,则删除整行。然后下一行,单元格H2,单元格I2,保留。然后是下一排

如果行的两个单元格相同,我想删除整行。我搜索了,这是最接近我想要实现的,并修改了代码

Sub CellAequalCellB ()
    Dim ws As Worksheet
    Dim rng As Range
    Dim lastRow As Long

    Set ws = ThisWorkbook.Sheets("Sheet1")

    lastRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row

    Set rng = ws.Range("H1:I" & lastRow)

    ' filter and delete all but header row
    With rng
        .AutoFilter field:=1, Criteria1:=" .AutoFilter field:=2 "

SpecialCells(xlCellTypeVisible).EntireRow.Delete
    End With

    ' turn off the filters
    ws.AutoFilterMode = False
End Sub

但是,当我运行时,entirerow.delete出现错误

您的自动筛选代码有许多错误,因此我已将该方法更改为简单的反向循环

sub CellAequalCellB ()
    Dim ws As Worksheet, rng As Range
    Dim lastRow As Long, i as long

    with ThisWorkbook.Sheets("Sheet1")

        lastRow = .Range("A" & .Rows.Count).End(xlUp).Row

        for i=lastrow to 1 step -1
            if .cells(i, "H") = .cells(i, "I") then _
                .rows(i).EntireRow.Delete
        next i

    end with

End Sub

我会努力改进的。感谢您在这方面的帮助,祝您有美好的一天!