如何刪除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第一列出現在第一張工作表中的行,過濾它們並刪除它們。
如果您有多個工作表並且需要更快的解決方案,那麼您需要一個巨集。

相關內容