如何删除 Excel 中的特定多行?

如何删除 Excel 中的特定多行?

我在一个文档中有五张工作表。第一张工作表的行包含第一列的值。我需要从其余工作表中删除所有第一列的值与第一张工作表第一列值相同的行。问题是有很多记录具有不同的列值,这些记录应该被删除。我怎样才能搜索所有包含第一张工作表(或与第一张工作表共同)的值的行并将其删除?

答案1

遍历 Sheet1 的 A 列中的每个值并使用该值过滤其余 4 个工作表应该会给您想要的结果。

Sub remove_from_2_to_5()
    Dim var As Variant, w As Long, rw As Long

    With Sheets(1)
        For rw = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
            If Not IsEmpty(.Cells(rw, 1)) Then
                var = .Cells(rw, 1).Value
                For w = 2 To 5
                    With Sheets(w).Cells(1, 1).CurrentRegion
                        .AutoFilter
                        .AutoFilter field:=1, Criteria1:=var
                        With .Offset(1, 0).Resize(.Rows.Count, .Columns.Count)
                            If CBool(Application.Subtotal(103, .Columns(1))) Then
                                .SpecialCells(xlCellTypeVisible).EntireRow.Delete
                            End If
                        End With
                        .AutoFilter
                    End With
                Next w
            End If
        Next rw
    End With

End Sub

当第一个 For/Next 循环向下遍历 Sheet1 的 A 列时,它会记录找到的值。这会在每个剩余的工作表中用作操作的标准.AutoFilter。如果在应用过滤器后显示单元格,则会删除这些行。

答案2

在每个工作表中插入一列,以检查第一列中的值是否出现在第一张工作表中:=iferror(match(a2,sheet1!a:a,0)>0,false)
您将获得true第一列出现在第一张工作表中的行,筛选并删除它们。
如果您有多张工作表并且需要更快的解决方案,那么您需要一个宏。

相关内容