我有一张包含重复行的 Excel 表。
A
C
D
E
F
如果某一行在列中的值与另一行在那些列中的值相同,我想删除该行(B
计算重复项时忽略列,但在删除行时将其删除)。
目前,它B
在比较和删除时都忽略了。
答案1
在 Excel 2013 中
- 选择所有数据
- 选择数据选项卡 -> 删除重复项
- 如果您的数据有列标题,请选中“我的列有标题”。
- 取消选中您不想用于比较的所有列
- 按“确定”
完毕
答案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 行等,则可以使用相同的解决方案...
希望它能帮助到别人....