如何根据某些列删除重复的行

如何根据某些列删除重复的行

我有一张包含重复行的 Excel 表。

A C D E F如果某一行在列中的值与另一行在那些列中的值相同,我想删除该行(B计算重复项时忽略列,但在删除行时将其删除)。

目前,它B在比较和删除时都忽略了。

答案1

在 Excel 2013 中

  1. 选择所有数据
  2. 选择数据选项卡 -> 删除重复项
  3. 如果您的数据有列标题,请选中“我的列有标题”。
  4. 取消选中您不想用于比较的所有列
  5. 按“确定”

完毕

答案2

如果我理解正确的话,给定第 1 行和第 2 行,当且仅当 A1 = A2、C1 = C2、D1 = D2、E1 = E2 且 F1 = F2 时,您才想要删除第 2 行。

这是我想出来的。它可能会更短,但它确实有效:

Sub DeleteDuplicate()
Dim current As String
ActiveSheet.Range("A1").Activate
Do While ActiveCell.Value <> ""
    current = ActiveCell.Address
    ActiveCell.Offset(1, 0).Activate
    Do While ActiveCell.Value <> ""
        If ((ActiveSheet.Range(current).Value = ActiveCell.Value) And (ActiveSheet.Range(current).Offset(0, 2).Value = ActiveCell.Offset(0, 2).Value) And (ActiveSheet.Range(current).Offset(0, 3).Value = ActiveCell.Offset(0, 3).Value) And (ActiveSheet.Range(current).Offset(0, 4).Value = ActiveCell.Offset(0, 4).Value) And (ActiveSheet.Range(current).Offset(0, 5).Value = ActiveCell.Offset(0, 5).Value)) Then
            ActiveSheet.Rows(ActiveCell.Row).Delete
        Else
        ActiveCell.Offset(1, 0).Activate
        End If
    Loop
    ActiveSheet.Range(current).Offset(1, 0).Activate
Loop
End Sub

它的作用是循环遍历所有剩余的行,使用 ActiveCell 作为指向正在评估的行的指针,并将“原始”行的单元格存储在当前的变量。一旦循环结束,当前的被激活并且内部评估循环再次开始。

如果我哪里搞砸了,请毫不犹豫地告诉我 :)

答案3

将此公式添加到每一行,例如在 G 列:

=IF(AND(A2=C2,A2=D2,A2=E2,A2=F2),"DELETE ME","")

这将产生如下结果:

A   B   C   D   D   F   G
-   -   -   -   -   -   -
x   o   x   x   x   x   DELETE ME
x   x   x   x   x   o   
x   x   x   x   x   x   DELETE ME
x   o   o   x   x   x   

然后在 G 列上创建一个过滤器,查找显示“删除我”的行,然后删除它们。

答案4

@ Garrulinae

我把你的想法当作灵感。我有很多行,我想要删除包含某一列重复值的行。如果我对该列使用“删除重复项”,那么它将仅删除该列中的数据,而不是整行。我想从整个表中删除每 2 行和 3 行。因此,我创建了一个新列,并将第一行的值留空,将 delete me 放在第二行和第三行。然后,我复制了该特定列的前三行的值(不是整行),并粘贴到表的整个列上。现在,我在整个列的每一行和每 2 行和 3 行中都有“delete me”。然后,我只需对该列的值进行排序,并删除所有包含 delete me 的行。如果您想删除每 2、3 和 4 行或 2、3、4 和 5 行等,则可以使用相同的解决方案...

希望它能帮助到别人....

相关内容