Löschen Sie doppelte Einträge in einer Spalte in excel 2003 vba
Gut die Frage ist, ich habe eine Spalte, zum Beispiel die Y-Spalte viele Einträge in der es, fast 40.000 und Es erhöht everyweek. Die Sache ist, ich habe zu prüfen, Duplikate in Y-Spalte, und löschen Sie die ganze Zeile. Also, Y-Spalte nur eindeutige Einträge.
Angenommen ich habe 3.000 Einträge und nach 1 Woche werde ich mit etwa 3.500 Einträgen. Jetzt habe ich zu prüfen, diese neu hinzugefügten 500 columnn Werte nicht den 3.500 mit dem alten + dem neuen ich.e von 3.500 Einträge und löschen der duplizierten Zeile. Die alten, die 3000 sollten nicht gelöscht oder geändert werden. Ich habe festgestellt Makros, aber Sie tun den trick für die gesamte Spalte. Ich würde gerne filter die neue 500-Werte.
Cells(2, "Q").Formula = "=COUNTIF(P$1:P1,P2)=0" 'I have used these formula
Range("Q2").Copy Destination:=Range("Q3:Q40109") 'it gives false for the duplicate values
Ich weiß, haben wir die Verwendung countif
für die doppelten Einträge. Aber was Iam tun, ist die Formel anwenden und dann die Suche nach falschen Einträgen und löschen Sie Sie dann. Ich glaub die Anwendung der Formel und die Suche nach falschen und dann löschen wenig zeitaufwendig.
Sub DeleteDups()
Dim x As Long
Dim LastRow As Long
LastRow = Range("A65536").End(xlUp).Row
For x = LastRow To 1 Step -1
If Application.WorksheetFunction.CountIf(Range("A1:A" & x), Range("A" & x).Text) > 1 Then
Range("A" & x).EntireRow.Delete
End If
Next x
End Sub
Dies ist, was ich bei google gefunden, aber ich weiß nicht wo der Fehler ist. Es ist das löschen aller Spalten, wenn ich
For x = LastRow To 1 Step -1
For x = LastRow to step 3000 ' It is deleting all 500 columns but if it is -1 working fine
Änderungen gemacht werden müssen für diese Funktion? oder sugest mir gute Funktion, die mir hilft. Überprüfen Sie für die doppelten Werte einer ausgewählten Bereich Spalte von der gesamten Spalte. Ich meine Scheck über 500 Einträge-Spalte Werte mit den 3500 Spalte entry-Werte und löschen Sie die Duplikate in 500 Einträge
Vielen Dank im Voraus
- Überhaupt sich Wundern, warum jeder gibt Sie irrelevante Antworten? Ist es möglich, dass Sie in die Irre geführt durch Ihre Frage, denn Sie ist unklar und verwirrend? Statt bedrohen jeden mit "-1", warum nicht Sie stellen Sie Ihre Frage klarer und übersichtlicher und damit helfen, diejenigen, die versuchen, Ihnen zu helfen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese sollte ziemlich einfach sein. Sie müssen erstellen 1 Zelle irgendwo in der Datei, die Sie schreiben, die Zellzahl für die Y-Spalte jede Woche nach dem entfernen aller Duplikate.
Zum Beispiel, sagen week1 entfernen Sie Duplikate, und Sie sind Links mit einer Reihe von Y1:Y100. Ihre Funktion setzen Sie "100" irgendwo in der Datei reference.
Nächste Woche, Ihre Funktion wird beginnen, suchen von Duplikaten aus (Zelle mit ref-Nummer) + 1, also Y:101-Ende der Spalte. Nach dem entfernen der Duplikate, ändert sich die Funktion der ref-Zelle auf die neue Zählung.
Hier ist der code:
*sorry, keine Ahnung, warum auto-syntax-highlighting macht dies schwer zu Lesen
Update:
Hier ist ein Weg, es zu tun in Excel 2003. Der trick ist, die Schleife rückwärts durch die Säule, so dass die Schleife nicht zerstört, wenn Sie eine Zeile löschen. Ich benutze ein Wörterbuch (ich bin berühmt für die über-über), da es Ihnen zu überprüfen, einfach für den betrogenen.
Wie kann Excel wissen, dass die Einträge "neu"? (z.B. wie können wir wissen, dass wir nur zu beachten, dass die letzten 500 Zeilen)
Eigentlich, wenn Sie bereits ausgeführt wird das makro in der letzten Woche, die ersten knapp 3000 Zeilen keine Duplikate, so dass die aktuelle Ausführung nicht ändern, diese Zeilen.
Den code beschrieben sollte es funktionieren. Wenn wir es behalten und ändern Sie es sehr leicht:
[BEARBEITEN] ein Weiterer (wahrscheinlich schnellere) Lösung: filter zuerst die Werte und löschen Sie dann die sichtbaren Zeilen:
Konnte nicht testen, diese Letzte Lösung hier, sorry.
Hier ist eine Idee:
Es überprüft den gesamten Bereich oberhalb der aktuellen Zelle für eine einzelne duplizieren. Wenn er gefunden wird, wird die aktuelle Zeile gelöscht.
BEARBEITEN ich erkannte in Ihrem Beispiel, Sie sagte die Y-Spalte, aber in Ihrem code, den Sie überprüfen A. Nicht sicher, ob das Beispiel war nur eine hypothetische, aber wollte sicher stellen, dass war nicht der Grund für das seltsame Verhalten.
Beachten Sie, dies ist ungetestet! Bitte speichern Sie Ihre Arbeitsmappe, bevor Sie versuchen, diese!