2017-07-07 6 views
4

Also ich versuche, alle Zeilen zu entfernen, die ein Duplikat in Spalte C haben. Dies ist eine Spalte von etwa 700 Datensätze, aber dieser Wert variiert mit verschiedenen Daten verwendet daher habe ich ein "LastRow" implementiert Funktion. Hier ist mein Code:VBA Excel Entfernen doppelter Zeilen

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 

ich die „anwendungsdefinierte oder objekt definiert“ Fehler bei der folgenden Zeile, wenn ich Schritt für Schritt Debug:

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

Irgendwelche Ideen, was falsch gehen? Ich rufe das "C8: C" & lrowcrc zum sofortigen Fenster, das auskommentiert wird, und es gibt mir die korrekten Bereichswerte, also glaube ich nicht, dass das Problem darin ist, aber ich kann nicht finden, was falsch ist ... irgendeine Hilfe groß geschätzt.

Antwort

3

Ändern Sie im Allgemeinen Array(3) zu Array(1) und es funktioniert möglicherweise.


Nicht allgemein: Die folgenden Werke für mich, das Entfernen der Duplikate in der Spalte C Vergewissern Sie sich, dass Sie auf dem ersten Arbeitsblatt arbeiten:

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 

in Ihrem Code bedeutet Array(3), dass Sie sollten mindestens drei Spalten in der .Range. Aber Sie haben nur Spalte C dort. Daher gibt es einen Fehler. Um mit Array(3) zu arbeiten, schreibe A1:C und es würde funktionieren.

1

Ich denke, Ihr Bereich ungültige Syntax. Bitte, versuchen Sie dies unter

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

End With 

Neben, ich glaube, Sie unten verwenden, sollten

lrowcrc = LastRowInCRC

Oder mit diesem Code letzte Reihe zu bekommen

wsCRC. [C8] .SpecialCells (xlCellTypeLastCell) .Row

Verwandte Themen