2013-06-07 19 views
8

ワークシートには、日付と名前の2つの列があります。私は正確な重複するすべての行を削除したい、一意の値だけを残す。ここで重複する行をすべて削除するExcel vba

は(動作しない)私のコードです:

Sub DeleteRows() 

Dim rng As Range 
Dim counter As Long, numRows As Long 

With ActiveSheet 
    Set rng = ActiveSheet.Range("A1:B" & LastRowB) 
End With 
numRows = rng.Rows.Count 

For counter = numRows To 1 Step -1 
    If rng.Cells(counter) Like rng.Cells(counter) - 1 Then 
     rng.Cells(counter).EntireRow.Delete 
    End If 
Next 

End Sub 

それは私が「型が一致しません」を取得られる原因のようだ「rng.Cells(カウンタ)-1のように」です。あなたが使用することができRemoveDuplicates方法あります

+0

'rng.Cells試してみてください(カウンタ - 1)' –

+1

は、あなたがデータに行くみました - >重複を削除しますか?または、この特定のアプリケーションにVBAを使用する必要がありますか? – fbonetti

+0

上記のコーディングは、かなり大きなワークシートではるかに多くの作業を行う手順の一部です。そのため、ボタンを1回クリックするだけで全体の作業をしたいと考えています。 –

答えて

23

Sub DeleteRows() 

    With ActiveSheet 
     Set Rng = Range("A1", Range("B1").End(xlDown)) 
     Rng.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes 
    End With 

End Sub 
+0

ありがとうございます。それはうまくいった。 –

+2

素晴らしい。あなたが役に立つと思ったら、この回答を「受け入れる」チェックボックスをクリックしてください。それは私がそれらの甘くて甘いカルマポイントを築くのに役立ちます:) – fbonetti

+0

それはまた、空の行を取り除きます。優れた! – CloseISQ

0

は、任意の列に重複値は、ループのためのシンプルで削除することができます。

Sub remove() 
Dim a As Long 
For a = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1 
If WorksheetFunction.CountIf(Range("A1:A" & a), Cells(a, 1)) > 1 Then Rows(a).Delete 
Next 
End Sub 
関連する問題