Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1468to1472
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wie redundante Zeilen mittels VBA löschen?

Wie redundante Zeilen mittels VBA löschen?
21.01.2016 12:40:55
KH
Guten Tag zusammen,
ich stehe vor der Herausforderung mithilfe eines VBA eine Tabelle nach redundaten Einträgen durchsuchen zu wollen. Diese werden daraufhin gelöscht.
Derzeit habe ich das folgendermaßen gelöst: Sheets("Tabelle1").Range("$A$1:$U$10000").RemoveDuplicates Columns:=3, Header:=xlYes
Das Makro löscht bei redundanten Zeilen im führenden Kriterium Spalte C die untere Zeile.
Im Übrigen nochmals danke für die Antworten im anderen Thread auf die ich es nicht geschafft habe zu antworten...
Wie muss das Makro aussehen, mit welchem ich die obere der redundanten Zellen lösche?
VG & Danke
KH

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wie redundante Zeilen mittels VBA löschen?
21.01.2016 13:05:52
Rudi
Hallo,
teste mal.
Sub aa()
Dim r As Range, rD As Range
For Each r In Range(Cells(2, 3), Cells(Rows.Count, 3).End(xlUp))
If WorksheetFunction.CountIf(Columns(3), r) > 1 Then
If WorksheetFunction.CountIf(Range(Cells(2, 3), r), r) = 1 Then
If rD Is Nothing Then
Set rD = r
Else
Set rD = Union(r, rD)
End If
End If
End If
Next r
If Not rD Is Nothing Then rD.EntireRow.Delete
End Sub
Gruß
Rudi

AW: Wie redundante Zeilen mittels VBA löschen?
21.01.2016 13:13:34
KH
Hallo Rudi,
cool, ich danke dir vielmals! Es erfüllt 1:1 meine Anforderung! :)
Eine Frage hätte ich noch: Wie kann ich (für später) Anpassungen vornehmen? Was definiert die 2 in Range(Cells(2, 3)?
Beste Grüße
KH

Anzeige
die Zeile. Siehe VBA-Hilfe. owT
21.01.2016 13:18:58
Rudi

AW: Wie redundante Zeilen mittels VBA löschen?
21.01.2016 13:23:47
Daniel
Hi
RemoveDuplicates lässt immer das erste Auftreten eines Duplikates stehen und löscht die folgenden.
Wenn das unterste Duplikat stehen bleiben soll, müsstest du die Sortierung umdrehen.
Wahrscheinlich gibt es irgendeine Zählnummer oder ein Datum, nach welchem du sortiern kannst (ggf mit umgekehrter Sortierreihenfolge)
Wenn es so ein Sortierkriterium nicht gibt, dann kannst du ja die Zeilennummer als Sortierkriterium hinzufügen:
With Sheets("Tabelle1").range("A1:V10000")
With .Columns(22)
.FormulaR1C1 = "=Row()"
.Formula = .Value
End with
.Sort key1:=.Cells(1, 22), order1:=xldescending, Header:=xlyes
.RemoveDuplicates 3, xlyes
.Sort key1:=.Cells(1, 22), order1:=xlascending, Header:=xlyes
.Clearcontents
end with

ganz ohne Sortieren würde folgendes funktioniern, allerdings ist die verwendete Funktion ZählenWenn nicht besonders schnell, ggf ist das obige mit dem sortieren dann schneller:
hierbei werden per Formel die Zeilen die gelöscht werden sollen mit 0 und die die stehen bleiben sollen mit der Zeilennummer gekennzeichnet. Dann wendet man das Removeduplicates auf die Hilfsspalte mit der Kennzeichungsformel an:
With Sheets("Tabelle1").Range("A1:V10000")
With .Columns(22)
.FormulaR1C1 = "=IF(CountIF(RC3:R10000C3,RC3)=1,Row(),0)"
.Formula = .Value
.Cells(1, 1).Value = 0
.EntireRow.RemoveDuplicates .Column, xlno
.ClearContents
end With
End with

Anzeige
AW: Wie redundante Zeilen mittels VBA löschen?
21.01.2016 13:52:42
KH
Hi Daniel, danke! Auf die Idee mit der Sortierung bin ich wahrscheinlich fast zeitgleich auch gekommen :)

317 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige