2016-01-21 50 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 
相關問題