2017-07-07 21 views
4

C列に重複している行を削除しようとしています。これは約700レコードの列ですが、この値は使用するデータによって異なりますので、 "LastRow"関数。ここに私のコードは次のとおりです。VBA Excel重複行を削除する

Public Function LastRowInCRC() As Long 

    Dim wsCRC As Worksheet 
    Set wsCRC = Worksheets("CRC") 

    With wsCRC 
     LastRowInCRC = .Cells(.Rows.Count, "C").End(xlUp).Row 
    End With 

End Function 

Sub DeleteDupRowsCRC() 

    Dim wsCRC As Worksheet 
    Set wsCRC = Worksheets("CRC") 

    Dim lrowcrc As Long 
    lrowcrc = CRC.LastRowInCRC 

    'Debug.Print "C8:C" & lrowcrc 

    With wsCRC 

     .Range("C8:C" & lrowcrc).RemoveDuplicates Columns:=Array(3) 

    End With 

End Sub 

私はステップのデバッグでステップするとき、私は、「アプリケーション定義またはオブジェクト定義」次の行でエラーが出ます:

.Range("C8:C" & lrowcrc).RemoveDuplicates Columns:=Array(3) 

任意のアイデア間違っていただきましたか!?私は "C8:C" & lrowcrcをコメントアウトされている直下のウィンドウに呼び出し、正しい範囲値を与えるので、問題はそれだとは思えませんが、何が間違っているのかわかりません。感謝。

答えて

3

通常、Array(3)からArray(1)に変更すると動作する場合があります。コラムCで重複を削除私のために、次の作品は、最初のワークシート上で動作していることを確認してください:


ない一般的な、あなたのコードで

Option Explicit 

Public Function LastRowInCRC() As Long 

    Dim wsCRC As Worksheet 
    Set wsCRC = Worksheets(1) 

    With wsCRC 
     LastRowInCRC = .Cells(.Rows.Count, "A").End(xlUp).Row 
    End With 

End Function 

Sub DeleteDupRowsCRC() 

    Dim wsCRC As Worksheet 
    Set wsCRC = Worksheets(1) 

    Dim lrowcrc As Long 
    lrowcrc = LastRowInCRC 

    'Debug.Print "C8:C" & lrowcrc 

    With wsCRC 

     .Range("C1:C" & lrowcrc).RemoveDuplicates Columns:=Array(1) 

    End With 

End Sub 

を、Array(3)はあなたがでなければならないことを意味し.Rangeの少なくとも3つの列。しかし、列にはCしかありません。したがって、それは間違いを与える。 Array(3)を使用するには、A1:Cと書いてください。

1

あなたの範囲が無効だと思います。 、横

With wsCRC 
    .Range(Cells(8, 3), Cells(lrowcrc, 3)).Select 
    .Range(Cells(8, 3), Cells(lrowcrc, 3)).RemoveDuplicates Columns:=1, Header:=xlYes 

End With 

の下にこれを試してみてください、私はあなたが下に使用すべきだと思う

lrowcrc = LastRowInCRC

または最後の行に取得するには、このコードを使用して

wsCRC。[C8] .SpecialCells(xlCellTypeLastCell)。ロー

関連する問題