Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1464to1468
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

Redundante Zeilen mittels VBA löschen

Redundante Zeilen mittels VBA löschen
06.01.2016 21:32:16
VBA-Anfänger
Guten Abend liebe Forumsmitglieder,
bitte entschuldigt den erneuten Beitrag aber ich halte es für sinnvoll, für unterschiedliche „Probleme“ eigene Threads zu eröffnen um die weitere Nutzung für Dritte zu erleichtern - ist das in Ihrem Sinne?
Innerhalb einer Datenbank möchte ich diejenigen Zeilen, für welche zwei Zellen einer Spalte übereinstimmen nach Druck auf einen VBA-Button löschen können. Eine Übereinstimmung weiterer Spalten soll hier keine Rolle mehr spielen!
Beispiel:
Hans Schmid Stuttgart 657298
Hans Schmid Hamburg 657298
Zeile 2 würde durch Druck auf einen VBA-Button gelöscht!
Kann mir jemand einen Anhaltspunkt zur Lösung geben? Ich bin in Sachen VBA leider noch relativ unbedarft, versuche allerdings mich kontinuierlich einzuarbeiten...
Meine bisherige Lösung funktioniert leider nicht - mein Ansatz war folgender
ActiveSheets.Range("$A1:$S$10000".RemoveDuplicatesColumns:=2, Header:=xlYes
Vielen Dank und einen schönen Abend
VBA-Anfänger

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Redundante Zeilen mittels VBA löschen
06.01.2016 23:15:36
Sepp
Hallo ?
.RemoveDupplikates wird von deiner Version nicht unterstützt.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub dupplikate()
Dim rng As Range

With Tabelle1
  With .Range("A1").CurrentRegion
    With .Columns(.Columns.Count + 1)
      .Formula = "=IF(SUMPRODUCT(($A$1:A1=A1)*($B$1:B1=B1))>1,ROW(),"""")"
      On Error Resume Next
      Set rng = .SpecialCells(xlCellTypeFormulas, 1)
      On Error GoTo 0
      If Not rng Is Nothing Then
        rng.EntireRow.Delete
      End If
      .Delete
    End With
  End With
End With

Set rng = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Redundante Zeilen mittels VBA löschen
06.01.2016 23:30:13
Daniel
Hi
RemoveDuplicates wurde doch schon in Excel 2007 hinzugefügt und müsste daher funktionieren.
ggf mal die Excelfunkton DATEN - DATENTOOLS - DUPLIKATE ENTFERNE ausführen und mit dem Recorder aufzeichnen, dann den aufgezeichneten Code anschauen, um zu sehen wie es programmiert wird.
Gruss Daniel

AW: Redundante Zeilen mittels VBA löschen
07.01.2016 19:53:00
VBA-Anfänger
Hallo Daniel, Hallo Sepp,
vielen Dank für eure Hinweise. Die Funktion ist mit meiner Excelversion möglich, einiges Probieren hat mich auf die richtige Einstellung gebracht. Nun wird durch Aktivierung des Makros die zweite der beiden redundanten Zeilen gelöscht - mein Ziel wäre es allerdings, die erste der beiden Zeilen zu löschen! So könnte ich Informationen zeilenweise in meine Datenbank importieren und anstatt veraltete Zeilen händisch zu löschen diese einfach durch die neuen Infos
a) ersetzen
b) ergänzen und die Zeile mit den veralteten Infos löschen.
Fällt euch hier eine (möglichst simple) Lösungsmöglichkeit ein? Der VBA-Recorder bringt mich hier nicht weiter...
Vielen Dank
Kalle

Anzeige
AW: Redundante Zeilen mittels VBA löschen
07.01.2016 20:09:47
Daniel
Hi
Duplikate-Entfernen lässt immer die Erste Zeile stehen und löscht dann alle darunter liegenden Zeilen mit gleichen Werten in den Prüfspalten.
wenn du also eine bestimmte Zeile erhalten willst, musst du die Tabelle sortieren, so dass diese Zeile als ersrte kommt.
Wenn beispielsweise in Spalte A der Name und in Spalte B das aktualtitätsdatum des Eintrags steht und du den jüngsten eintrag zu einem Namen behalten und die anderen löschen willst, dann musst du die Tabelle vor dem Duplikate-Entfernen nach dem Datum - absteigend sortieren.
ja, auch das Sortieren kann man per Recorder aufzeichnen und als Makro ausführen lassen.

Anzeige
AW: Redundante Zeilen mittels VBA löschen
08.01.2016 16:33:35
VBA-Anfänger
Hallo Daniel,
danke für den Tipp! Ich habe eine Möglichkeit gefunden, die Schwierigkeit zu umgehen. Allerdings stehe ich jetzt vor der Herausforderung ein Kopieren von Tab "Input" zu Tab "Datenbank" zu programmieren, was ich gerne via
Sheets("Datenbank").Range("B2:B10").Value = Sheets("Input").Range("A2:A10").Value lösen würde.
Gibt es eine Möglichkeit, wie ich hier die zweite Angabe (hier: 10) in Abhängigkeit von der Anzahl der gefüllten Zellen setzen kann, beispielsweise durch Integration des Befehls Worksheetfunction.CountA(Sheets("Input").Range("A2:A500").Value ?!
Vielen Dank und beste Grüße
Kalle

Anzeige
AW: Redundante Zeilen mittels VBA löschen
08.01.2016 16:46:30
Daniel
Hi
z.b
x = Worksheetfunction.CountA(Range("A2:A500"))
Range("B2:B" & x).value = Range("A2:A" & x).value
oder
Range("B2").resize(x, 1).Value = Range("A2").Resize(x, 1).Value

wenn du es dir einfach machen willst, überträgst du mit .copy+.pastespecial.
dann musst du beim Zielbereich nur die erste Zelle angeben.

Range("A2:A" & x).Copy
Range("B2").pasteSpecial xlpastevalues
die Sheets habe ich hier mal wegen der übersichtlichkeit wegelassen.
Gruss Daniel

AW: Redundante Zeilen mittels VBA löschen
08.01.2016 22:13:53
VBA-Anfänger
Hallo Daniel,
super vielen Dank dir, deine Hinweise haben mir geholfen mein Projekt erfolgreich abzuschließen! Muchas gracias ;)
Gruss
Kalle

Anzeige
AW: Redundante Zeilen mittels VBA löschen
08.01.2016 22:43:24
VBA-Anfänger
Hallo Daniel (und alle anderen, die sich angesprochen fühlen :)),
ich lasse redundante Zellen nun mittels des Befehls ActiveSheet.Range("A1:A1000").RemoveDuplicates... löschen. Wie kann ich dokumentieren lassen, welche Zellen als redundante Zellen gelöscht wurden?
VG
Kalle

AW: Redundante Zeilen mittels VBA löschen
08.01.2016 23:03:55
Daniel
dazu musst du die Originaldaten aufheben (dh das RemoveDupilkates in einer kopie ausführen) und in den originaldaten die Zeilen die gelöscht werden kennzeichnen.
das geht in unsortierten Daten mit folgenender Formel in B1:B1000:
=ZählenWenn(a$1:a1;a1)>1
damit steht bei den Zeilen die gelöscht werden ein WAHR und bei denen die stehenbleiben ein FALSCH
gruss Daniel

Anzeige
AW: Redundante Zeilen mittels VBA löschen
09.01.2016 09:09:40
VBA-Anfänger
Hi Daniel,
jein... Ich suche eher nach einer Möglichkeit, mittels VBA Code die gleichen Zellen einer Spalte auszuwählen und diese daraufhin mittels Sheets.Range.Value = Sheets.Range.Value auf ein Tabellenblatt "Archiv" zu kopieren - ich denke das wäre für meinen Anwendungsfall sehr viel einfacher...
VG
Kalle

AW: Redundante Zeilen mittels VBA löschen
09.01.2016 09:24:33
Daniel
Wenn du die Zeilen so wie von mir beschrieben markiert hast, kannst du sie mit dem Autofilter filtern, dann kopieren und ins Archiv einfügen.
In gefilterten Tabellen werden nur die sichtbaren Zeilen kopiert.
Auch den Autofilter kann man per Makro ansteuern, der Recorder ist dein Freund.
Gruß Daniel
Anzeige

317 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige