比较Excel中的两列并删除重复的行

时间:2018-10-10 11:26:08

标签: excel vba

我在excel的两列中有以下数据:

AB  CD

EF  GH

CD  AB

GH  EF

如果column1中的值与column2中的任何单元格匹配,则应删除该行。从单元格A1开始,在B3中发现重复值,因此删除了第三行。转到A2,在B4中找到重复的值,因此删除了第四行。

输出应为

AB  CD

EF  GH

2 个答案:

答案 0 :(得分:0)

尝试一下...

Dim firstCell as Range
Dim secondCell as Range

For Each firstCell in Intersect(ActiveSheet.UsedRange, Range("A:A"))
    For Each secondCell in Intersect(ActiveSheet.UsedRange, Range("B:B"))
        If firstCell.Value = secondCell.Value Then
            secondCell.EntireRow.Delete
        End If
    Next
Next

答案 1 :(得分:0)

我知道,当我遇到这些情况时,总是总是踢自己删除数据。我总是提倡更彻底地测试数据,然后才决定终止某些操作。因此,即使我认为VBA方法很优雅,我还是会先采用方程式方法,并给自己一些容易进行大规模删除的标记。下面的方程式,如图所示。

Illustration of how testing data would allow sort/filter action

C列测试这是否是第一次出现的数据:

=IFERROR(IF(ROW(A2)<MATCH(A2,B:B,0),"First","Duplc"),"First")

D列,测试这是否是第一次出现数据:

=IFERROR(IF(ROW(B2)<MATCH(B2,A:A,0),"First","Duplc"),"First")

E列,测试数据的第一/第一,重复/重复或新的单次出现:

=IF(AND(C2="First",D2="First"),"Keep",IF(AND(C2="Duplc",D2="Duplc"),"Delete","Review"))

每当我看到“评论”单元格时,我都会进行测试以确保不删除有价值的数据点。您的数据可能比我在这里做的要简单,但是我很后悔超级强大的批量删除功能。