首页 > 解决方案 > 将表格与其他工作表中的列表进行比较并删除任何匹配项

问题描述

我有以下代码比较两个列表(表 1 中的 A 列和表 2 中的 C 列)并删除表 2 列表中不存在的值。此代码工作正常,但当两列 A 时它都不起作用在工作表 1 和工作表 2 的 C 列中有表格。请让我知道如何修改此代码以也适用于表格。此外,如何从具有 C 列(表 2)常量列表的多个工作表中删除不匹配项?

Sub Stridhan()

Dim lr As Integer, x As Integer   
lr = ThisWorkbook.Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False  
For x = lr To 2 Step -1  
    If Application.WorksheetFunction.CountIf(Sheets("Sheet2").Range("C:C"), Sheets("Sheet1").Cells(x, 1).Value) = 0 Then  
        Sheets("Sheet1").Rows(x).EntireRow.Delete  
    End If  
Next x  
Application.ScreenUpdating = True  
End Sub

标签: excelvbacompare

解决方案


为了让它通过更多的工作表,你可以使用这样的代码

Sub cycle_sheets()
For Each sh In Worksheets
    If sh.Name <> "Sheet2" Then
        'your code to cycle through the data where instead of Sheets("SheetX"). you use sh. like this
        sh.Rows(x).EntireRow.Delete
    End If
Next
End Sub

这将遍历所有工作表,并且对于所有与“Sheet2”命名不同的工作表,它将执行 if 中的内容。因此,您只需要获取您的代码,更改工作表引用并将其放入 if 中。

编辑:如果您希望它跳过由于过滤而不可见的行,您可以在确定是否要使用删除之前检查该行

If sh.Rows(x).Hidden = False Then

推荐阅读