Excel宏以查找工作表A中的重复项并删除工作表B中的重复项

时间:2014-08-12 22:44:16

标签: excel vba excel-vba duplicates

此问题涉及三张表(A,B,C)

工作表A包含数据表,而A列中包含名称列表

工作表B包含一个数据表(类似于与B不同),而在A列中有一个名称列表

表C是名为“匹配”的表格。

我已经有一个宏从A和B中复制A列中的名称,并将它们粘贴在C表的A列中。

由于来自工作表A和工作表B的数据的性质,完成此操作后会有几个重复。

目前我必须在Sheet C中手动找到Duplicates,然后进入Sheet B并删除具有Duplicate Name的行。

我想要任何可能有助于解决此问题的公式。具体来说,一个公式在工作表C上找到重复值,然后转到工作表B并删除整行数据。

更新:见下面的评论

2 个答案:

答案 0 :(得分:0)

在Excel 2010中测试的已更新评论的建议解决方案

Private Sub removeDuplicates()

Dim lastCellSheetA As Range, lastCellSheetB As Range
Dim cellA As Range, cellB As Range

'dynamically find the last cell with values
Set lastCellSheetA = Worksheets("SheetA").Range("A1").End(xlDown)
Set lastCellSheetB = Worksheets("SheetB").Range("A1").End(xlDown)

For Each cellA In Worksheets("SheetA").Range("A1", lastCellSheetA).cells
    For Each cellB In Worksheets("SheetB").Range("A1", lastCellSheetB).cells
        'if values are case sensitive, remove the UCase method from both sides of the equality comparison
        If UCase(cellB.Value) = UCase(cellA.Value) Then
            Debug.Print "deleting row " & cellB.Row & " because duplicate value of " & cellB.Value & " found"
            cellB.EntireRow.Delete
        End If
    Next cellB
Next cellA

End Sub

答案 1 :(得分:0)

ScreenUpdating = False

    FirstItem = Sheets("FTE+Vendor").Range("A2").Value
    SecondItem = Sheets("Vendor").Range("A2").Value

    Offsetcount1 = 0
    Offsetcount2 = 0

        Do While FirstItem <> ""

            If FirstItem = SecondItem Then
                Sheets("Vendor").Select
                Range("A2").Select
                ActiveCell.Offset(Offsetcount2, 0).Select
                Rows(ActiveCell.Row).Select
                Selection.Delete Shift:=xlUp

                Offsetcount2 = 0
                Sheets("Vendor").Select
                Range("A2").Select
                SecondItem = ActiveCell.Offset(Offsetcount2, 0).Value

                Offsetcount1 = Offsetcount1 + 1
                Sheets("FTE+Vendor").Select
                Range("A2").Select
                FirstItem = ActiveCell.Offset(Offsetcount1, 0).Value

            ElseIf FirstItem <> SecondItem Then

                Offsetcount2 = Offsetcount2 + 1
                Sheets("Vendor").Select
                Range("A2").Select
                SecondItem = ActiveCell.Offset(Offsetcount2, 0).Value

                If SecondItem = "" Then

                    Offsetcount1 = Offsetcount1 + 1
                    Sheets("FTE+Vendor").Select
                    Range("A2").Select
                    FirstItem = ActiveCell.Offset(Offsetcount1, 0).Value
                    Offsetcount2 = 0
                    Sheets("Vendor").Select
                    Range("A2").Select
                    SecondItem = ActiveCell.Offset(Offsetcount2, 0).Value

                End If
            End If
        Loop

ScreenUpdating = True 结束子