在电子表格的同一列中将2个行单元格与下面的行单元格进行比较时,基于重复值删除行

时间:2019-01-03 09:32:46

标签: excel vba excel-vba

我正试图从一个很大的电子表格中删除(大部分)重复的行。

如果每行两个单元格中的值相同,我可以说该行是重复的。

这里是一个例子:

1   a   ewq
1   e   weq
1   h   ewq
2   b   ddsfa
2   b   as
2   i   d
3   c   fdsa
3   f   ads
4   d   fd
4   g   as

在此示例中,第四行和第五行将重复,因为列“ A”和列“ B”中的值相同。决定值将始终在同一列中找到。

我希望根据重复状态摆脱第四行或第五行,并向上移动行。

我什至不确定这是否已经结束,但这是我到目前为止的结果(我遇到了失配错误):

Sub MasterRemoveDuplicates()
Dim Master As Worksheet

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Set Master = Workbooks("Master.csv").Worksheets("Master")

 Last = 1

For i = 1 To 18211 
If Range("A" & i) And Range("B" & i) <> Range("A" & (i + 1)) And Range("B" & (i + 1)) Then
Worksheets("Master").Rows(Last).Delete Shift:=xlShiftUp
Last = i + 1

Master.Activate
End If
Next i

MsgBox "Completed!", vbInformation, ""

reset_settings:
Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub

任何关于如何实现这一目标的想法将不胜感激!

P.S。一切都在同一个工作表中。

2 个答案:

答案 0 :(得分:3)

您正在尝试重新发明轮子。有一个现成的RemoveDuplicates命令。

Sub MasterRemoveDuplicates()

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    With Workbooks("Master.csv").Worksheets("Master")

        With .Range(.Cells(1, "A"), .Cells(.Rows.Count, "A").End(xlUp).Offset(0, 2))

            .RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo

        End With

    End With

    MsgBox "Completed!", vbInformation, ""

reset_settings:
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True

End Sub

答案 1 :(得分:1)

如果if语句有误

尝试一下:

    If Range("A" & i) <> Range("A" & (i + 1)) And Range("B" & i) <> Range("B" & (i + 1))    Then