【问题标题】:Compare two columns in excel and delete the duplicate row比较excel中的两列并删除重复的行
【发布时间】:2018-10-10 22:09:45
【问题描述】:

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

AB  CD

EF  GH

CD  AB

GH  EF

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

输出应该是

AB  CD

EF  GH

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 我可以突出显示重复项,但在我的情况下,每个条目都是重复的,因此无法突出显示和删除。
  • 你的输出和解释不匹配,形成你的解释输出将为零
  • 您为什么不能突出显示和删除 - 您的评论说它正确突出显示重复项,在这种情况下是所有重复项,但我看不出这如何阻止您删除所有重复项?如果它不应该全部突出显示,那么您需要更改构成重复的参数。
  • 你说If the values in column1 matches any cell in column2, the row should be deleted,但在你的例子中,输出包括AB CD,即使CD在第22列(你说any单元格)......同样对于另一个示例输出。您可能应该重新考虑您的解释。

标签: excel vba


【解决方案1】:

试试这个...

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

【讨论】:

    【解决方案2】:

    我知道,当我遇到这些情况时,我总是会因为删除数据而自责。在我决定终止某件事之前,我总是提倡更彻底地测试数据。所以,即使我认为 VBA 方法很优雅,我还是会先采用方程方法,然后给自己一些简单的标志来进行大规模删除。方程式如下,如图所示。

    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"))
    

    每当我看到“审查”单元格时,我都会进行测试以确保我没有删除有价值的数据点。您的数据可能比我这里做的更简单,但我对超强大的批量删除感到遗憾。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      • 1970-01-01
      • 2019-12-10
      • 2011-04-05
      • 2018-10-06
      • 2010-10-10
      相关资源
      最近更新 更多