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


11

我有一个Excel工作表,其中包含重复的行

我想删除其ACDEF列相同的行(在计算重复项时忽略B,但在删除行时将其删除)

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


您可以添加一个之前和之后想要的屏幕截图吗?我正在努力想像您需要什么(对不起)
Dave

因此,列A,C,D,E,F中的任何重复值都将导致整个行删除,并保留重复项的第一个实例?如果A1匹配A2,但C2匹配C3,行2会被删除怎么办?
Raystafarian 2014年

Answers:


18

在Excel 2013中

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

完成


不,这会查找与其他行相似的行。我也想到了这一点,但这是一个不同问题的解决方案:)
Garrulinae 2014年

@Garrulinae您在说什么,您能解释一下这怎么不起作用吗?看来OP的问题是正确的答案。
TheCrazyProgrammer

@TheCrazyProgrammer-在2年多的时间里,我可以看到OP的问题“ 如果它的ACDEF列相同,我想删除一行 ”可以用两种不同的方式来解释。我的意思是,如果在此行中这些列彼此相同。该答案假定这意味着该行各列中的值是否与另一行相同。事后看来,这种假设似乎是正确的,尤其是因为它被标记为正确答案。
Garrulinae

@Garrulinae Gotcha。现在,我看到并理解了您的答案。附带说明一下,我很惊讶OP(和我)所需的功能作为Excel中的简单按钮而存在,但是使用Google搜索时,您会看到许多文章,它们在做复杂的事情,这使我一时对此表示怀疑。
TheCrazyProgrammer

@TheCrazyProgrammer,我也有一个旁注-我才刚刚意识到是由OP发布此答案的!显然,这是正确的答案,但问题还不清楚,这很遗憾。
Garrulinae'8

1

如果我正确理解了给定的行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作为要评估的行的指针遍历所有其余行,并将“原始”行的单元格存储在当前变量中。循环结束后,低于电流的单元格将被激活,内部评估循环将再次开始。

如果我在某个地方搞砸了,不要犹豫告诉我:)


1

将此公式添加到每一行中,例如;在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列上为行“ DELETE ME”创建一个过滤器,并将其删除。


0

@绿豆科

我以您的想法为灵感。我有很多行,我想要删除包含一列重复值的行。如果我在该列上使用“删除重复项”,则它将仅删除该列中的数据,而不删除整个行中的数据。我想从整个表格中删除第二行和第三行。因此,我做了一个新列,并将第一行的值留空,然后在第二和第三行中删除了我。然后,我仅复制该特定列的前三行的值(而不是整个行),并粘贴到表的整个列上。现在,我在整个列的第二行和第三行中都“删除了我”。然后,我只需要排序该列的值并删除所有包含删除我的行。如果要每隔第二,第三和第四或第二,第三,第四和第五等删除,则可以使用相同的解决方案...

希望它能帮助某人。


2
我不完全明白你在说什么。除了说明您所做的事情之外,您还可以我们展示您使用的公式,并提供一些示例数据,并说明您的答案如何在这些数据上起作用吗?
Scott
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.