2016-01-21 54 views
1

我想写一个vba代码来摆脱一行,如果有任何字是立即重复在同一列(列E),但在其他行。如果发生这种情况,要删除的行是上面的那一行。按照下面的例子。在这种情况下,要删除的行是:E6,E10和E15。VBA摆脱整行,如果一个特定的列重复在下一行中的一个字

工作表的名称是测试。列和F和G不相关。

非常感谢!

enter image description here

编辑从评论添加代码:

Sub delete_duplicates_column_E() 
    With Sheets("test").Range("A:E") 
     .Value = .Value 
     .RemoveDuplicates Columns:=5, Header:=xlYes 
    End With 
End Sub 
+0

您可以显示迄今为止编写的代码吗? – PKatona

+0

是的。但是并没有严格执行我想要的,因为删除了所有重复项。见下文: “子delete_duplicates_column_E() 随着表(” 测试 “)范围。(” A:E“) 。价值= .value的 .RemoveDuplicates色谱柱:= 5,部首:= xlYes 结束随着 End Sub“ – Gonzalo

回答

0

就刮起这件事,试试吧:

Sub removeDuplicates() Range("E2").Select Do Until ActiveCell.Value = "" If ActiveCell.Value = ActiveCell.Offset(1).Value Then ActiveCell.EntireRow.Delete (xlShiftUp) End If ActiveCell.Offset(1).Select Loop End Sub

+0

似乎正在工作!谢谢! 添加到您的代码只是 集WS =表(“测试”) ws.Select ws.Range(“E2”)。选择 – Gonzalo

+0

不是问题,只记得'.select'可以说是相当波动,应该是尽可能避免。 –

0

当删除行,最好是环回病房:

Sub delete_duplicates_column_E() 
    Dim ws As Worksheet 
    Dim lastrow As Long 
    Dim i As Long 

    Set ws = Sheets("test") 
    With ws 
     lastrow = .Range("E" & .Rows.Count).End(xlUp).Row 
     For i = lastrow To 2 Step -1 
      If .Cells(i, 5) = .Cells(i + 1, 5) Then 
       .Rows(i).Delete 
      End If 
     Next i 
    End With 
End Sub 
相关问题