2017-09-26 149 views
0

我是Excel vba中相當新的,我在這裏要做的是, 根據列C中的值移除所有重複的行,因此每當列c有重複的值會刪除整行。到目前爲止,我有這個Excel VBA如何根據C列刪除所有重複的行

Sub RemoveDupe() 
Dim rCell As Range 
Dim rRange As Range 
Dim lCount As Long 

Set rRange = Range("C1", Range("C" & Rows.Count).End(xlUp)) 
lCount = rRange.Rows.Count 

For lCount = lCount To 1 Step -1 
    With rRange.Cells(lCount, 1) 
     If WorksheetFunction.CountIf(rRange, .Value) > 1 Then 
      .EntireRow.Delete 
     End If 
    End With 
Next lCount 
End Sub 

但在這裏它是leving的第一個值,我想刪除一個了。只有行將剩餘誰沒有任何重複或獨特的。 有幫助嗎?

+0

爲什麼不使用從數據菜單中刪除重複?我不認爲在兩個不同的事情上使用相同的變量是很好的做法。 – SJR

+1

你是說你想刪除包含重複數據的所有行,或者直到你只有沒有重複的行?你的第一段和最後一段似乎有衝突。 – BerticusMaximus

+0

@BerticusMaximus - 確實如此,「did'nt有任何重複」或「唯一」! – SJR

回答

1

像這樣的東西應該爲你工作:

Sub tgr() 

    Dim ws As Worksheet 
    Dim rCheck As Range 
    Dim rDel As Range 

    Set ws = ActiveWorkbook.ActiveSheet 

    For Each rCheck In ws.Range("C1", ws.Cells(ws.Rows.Count, "C").End(xlUp)).Cells 
     If WorksheetFunction.CountIf(ws.Columns("C"), rCheck.Value) > 1 Then 
      If Not rDel Is Nothing Then 
       Set rDel = Union(rDel, rCheck) 
      Else 
       Set rDel = rCheck 
      End If 
     End If 
    Next rCheck 

    If Not rDel Is Nothing Then rDel.EntireRow.Delete 

End Sub 
+0

@tigeravatara謝謝你,它的工作。 –

0
Range("A1:D10").CurrentRegion.RemoveDuplicates Columns:=Array(3), Header:=xlYes 

將刪除所有行的選擇範圍,在第三列

0

一個稍微不同的方式重複值;它首先爲重複的單元格着色,然後刪除每個着色單元格的行。

Sub test() 
Dim rng1 As Range 
Dim lRow As Long 
Dim i As Long 

lRow = Range("C" & Rows.Count).End(xlUp).Row 
Set rng1 = Range("C2", Cells(Rows.Count, "C").End(xlUp)) 

    For Each cell In rng1 
     If WorksheetFunction.CountIf(rng1, cell.Value) > 1 Then 
      cell.Interior.ColorIndex = 6 
     End If 
    Next cell 

    For i = lRow To 2 Step -1 
     If Cells(i, 3).Interior.ColorIndex = 6 Then 
      Rows(i).Delete 
     End If 
    Next 
End Sub