Tabellenabgleich mit Löschung

Bild

Betrifft: Tabellenabgleich mit Löschung
von: Burghard
Geschrieben am: 03.04.2005 08:23:15
Hallo,
ich brauche mal wieder Hilfe (seufz). Ich habe das Archiv und die Recherche schon rauf und runter gesucht unter "Tabellen vergleichen", "Tabellen abgleichen" etc., aber alles paßte nicht so, wie ich das brauche.
Ich habe in einer Arbeitsmappe zwei Tabellen, die den gleichen Spaltenaufbau haben (4 Spalten). Die Tabellen sind in der Anzahl der Datensätze unterschiedlich. In Tabelle1 gibt es Zeilen, die nicht in Tabelle2 sind und umgekehrt.
Ich suche ein VBA-Makro, daß die Tabelle1 und Tabelle2 mit der ganzen Zeile, also allen 4 Spalten, miteinander vergleicht.
Die Zeilen, die in Tabelle1 und Tabelle2 völlig gleich sind, sollen sowohl in der Tabelle1 und auch in der Tabelle2 gelöscht werden.
Als Ergebnis sollten dann in Tabelle1 nur noch die Datensätze übrigbleiben, die in Tabelle2 nicht vorhanden sind und umgekehrt.
Über Hilfe würde ich mich sehr freuen. :-)
Gruß
Burghard

Bild

Betrifft: AW: Tabellenabgleich mit Löschung
von: Hajo_Zi
Geschrieben am: 03.04.2005 08:36:01
Hallo Burghard,
müssen immer alle 4 Spalten verglichen werden, oder gibt es eine Spalte die man als Vergleichskriterium benutzen kann?
Also ich für meinen Teil teste Code immer bevor ich ihn Poste. Du hast Dir die Arbeit schon gemacht die Datei zu erstellen. Wäre es da nicht besser ein Beispiel hochzuladen?

Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.


Bild

Betrifft: AW: Tabellenabgleich mit Löschung
von: Burghard
Geschrieben am: 03.04.2005 16:05:53
Hallo Hajo,
schönen Dank für deine Antwort. Du hast vollkommen recht. Sorry, daß ich eine Beispieltabelle nicht beigefügt habe.
Werner hat mir kurz nach deiner Antwort ein funktionierendes Makro geschrieben/in das Forum gestellt.
Vielen Dank für dein Hilfeangebot!
Gruß
Burghard
Bild

Betrifft: AW: Tabellenabgleich mit Löschung
von: WernerB.
Geschrieben am: 03.04.2005 10:02:43
Hallo Burghard,
da meine Glaskugel sonntags ihren Ruhetag hat, bin ich von folgenden Voraussetzungen ausgegangen:
1. Die beiden Tabellenblätter heißen "Tabelle1" und "Tabelle2".
2. Die Tabellen haben keine Überschriften.
3. Die vier Spalten in beiden Tabellen sind jeweils die Spalten A bis D.

Sub Burghard()
Dim wS1 As Worksheet, wS2 As Worksheet, _
    sT As String, _
    i As Long, j As Long, laR1 As Long, laR2 As Long
    Application.ScreenUpdating = False
    Set wS1 = Sheets("Tabelle1")
    Set wS2 = Sheets("Tabelle2")
    With wS1
      laR1 = .Cells(Rows.Count, 1).End(xlUp).Row
      For i = laR1 To 1 Step -1
        sT = .Cells(i, 1).Text & .Cells(i, 2).Text _
          & .Cells(i, 3).Text & .Cells(i, 4).Text
        laR2 = wS2.Cells(Rows.Count, 1).End(xlUp).Row
        For j = laR2 To 1 Step -1
          If sT = wS2.Cells(j, 1).Text & wS2.Cells(j, 2).Text _
            & wS2.Cells(j, 3).Text & wS2.Cells(j, 4).Text Then
            .Rows(i).Delete
            wS2.Rows(j).Delete
            Exit For
          End If
        Next j
      Next i
    End With
    With wS2
      laR2 = .Cells(Rows.Count, 1).End(xlUp).Row
      For i = laR2 To 1 Step -1
        sT = .Cells(i, 1).Text & .Cells(i, 2).Text _
          & .Cells(i, 3).Text & .Cells(i, 4).Text
        laR1 = wS1.Cells(Rows.Count, 1).End(xlUp).Row
        For j = laR1 To 1 Step -1
          If sT = wS1.Cells(j, 1).Text & wS1.Cells(j, 2).Text _
            & wS1.Cells(j, 3).Text & wS1.Cells(j, 4).Text Then
            .Rows(i).Delete
            wS1.Rows(j).Delete
            Exit For
          End If
        Next j
      Next i
    End With
    Application.ScreenUpdating = True
End Sub

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Bild

Betrifft: AW: Tabellenabgleich mit Löschung
von: Burghard
Geschrieben am: 03.04.2005 16:07:42
Hallo Werner,
schönen Dank für das Makro. Funktioniert einwandfrei. Super.
Stellt es ein Problem dar, das Makro noch so zu ändern, daß erst ab Zeile 2 (wegen Übeschriften in beiden Tabellen in A1, B1, C1, D1) verglichen und gelöscht wird? Ich mag gar nicht fragen.
Schönen Dank für die Hilfe!
Gruß
Burghard
Bild

Betrifft: AW: Tabellenabgleich mit Löschung
von: andre
Geschrieben am: 03.04.2005 20:12:59
Hallo Burghard,
Du musst in Zeilen mit diesem code:
For i = laR1 To 1 Step -1
To 1 in To 2 ändern. Statt laR1 steht auch laR2 oder anderes.
Bild

Betrifft: AW: Tabellenabgleich mit Löschung
von: Burghard
Geschrieben am: 04.04.2005 11:38:32
Hallo Andre,
vielen Dank für deine Hilfe! Alles super!
Gruß
Burghard
Bild

Betrifft: AW: Tabellenabgleich mit Löschung
von: WernerB.
Geschrieben am: 04.04.2005 07:22:43
Hallo Burghard,
dem Manne kann geholfen werden:

Sub Burghard()
Dim wS1 As Worksheet, wS2 As Worksheet, _
    sT As String, _
    i As Long, j As Long, laR1 As Long, laR2 As Long
    Application.ScreenUpdating = False
    Set wS1 = Sheets("Tabelle1")
    Set wS2 = Sheets("Tabelle2")
    With wS1
      laR1 = .Cells(Rows.Count, 1).End(xlUp).Row
      For i = laR1 To 2 Step -1
        sT = .Cells(i, 1).Text & .Cells(i, 2).Text _
          & .Cells(i, 3).Text & .Cells(i, 4).Text
        laR2 = wS2.Cells(Rows.Count, 1).End(xlUp).Row
        For j = laR2 To 2 Step -1
          If sT = wS2.Cells(j, 1).Text & wS2.Cells(j, 2).Text _
            & wS2.Cells(j, 3).Text & wS2.Cells(j, 4).Text Then
            .Rows(i).Delete
            wS2.Rows(j).Delete
            Exit For
          End If
        Next j
      Next i
    End With
    With wS2
      laR2 = .Cells(Rows.Count, 1).End(xlUp).Row
      For i = laR2 To 2 Step -1
        sT = .Cells(i, 1).Text & .Cells(i, 2).Text _
          & .Cells(i, 3).Text & .Cells(i, 4).Text
        laR1 = wS1.Cells(Rows.Count, 1).End(xlUp).Row
        For j = laR1 To 2 Step -1
          If sT = wS1.Cells(j, 1).Text & wS1.Cells(j, 2).Text _
            & wS1.Cells(j, 3).Text & wS1.Cells(j, 4).Text Then
            .Rows(i).Delete
            wS1.Rows(j).Delete
            Exit For
          End If
        Next j
      Next i
    End With
    Application.ScreenUpdating = True
End Sub

Gruß
WernerB.
Bild

Betrifft: AW: Tabellenabgleich mit Löschung
von: Burghard
Geschrieben am: 04.04.2005 17:27:09
Hallo Werner,
schönen Dank. Klappt einwandfrei! Einfach super!
Viele Grüsse
Burghard
P.S.:
Ich hab da noch ein anderes Problem. Ich stelle es ins Forum.
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Ordner suchen nach Namensbestandteil"