abuelito
Goto Top

Vergleich von 2 Tabellen in Excel

Hallo an Alle,

folgendes Problem:

Ich habe eine Exceldatei mit 2 Tabellen. Spalten sind identisch. Tabelle1 hat aktuelle Daten und Tabelle2 ist die vorherige Version.

Jetzt würde ich gerne die Daten aus Tabelle1 mit den Daten aus Tabelle2 vergleichen, und die, die doppelt sind, also in beiden Tabellen auftauchen, in Tabelle1 die ganze Zeile löschen. Damit ich am Ende in der Tabelle1 nur die Daten habe, die in Tabelle2 nicht vorkommen, also nur die neu hinzugefügten.

Wie kann ich in VBA folgendes machen:

Wenn ZelleA2 und ZelleC2 aus Tabelle1 gleich Tabelle2, dann die ganze Zeile aus Tabelle1 löschen ... usw. als Schleife

Datenformate:

1. Spalte A sind Zahlen (4 Stellen)
2. Spalte C ist die Anschrift (gemischt = Straße, Hausnummer, Postleitzahl und der Ort)

Vielen lieben Dank für eure Hilfe

Viele Grüße

Content-ID: 271368

Url: https://administrator.de/contentid/271368

Ausgedruckt am: 15.11.2024 um 23:11 Uhr

holli.zimmi
holli.zimmi 07.05.2015 um 15:38:54 Uhr
Goto Top
Hi,

warum machst du das nicht mit den befehl "SVERWEIS"?
Von Tabelle1 eine Spalte hinzufügen und immer ein "x" ausgeben lassen!

Kannst Du bitte mal die Spaltenüberschrift mitteilen? ( Keine Daten! )

Gruss
abuelito
abuelito 07.05.2015 um 15:52:20 Uhr
Goto Top
Hallo Holli,

vielen Dank für Deine Antwort.

Ich würde dies gerne mit VBA realisieren.

Die beiden Überschriften lauten:

Spalte A = ID
Spalte C = Anschrift

Grüße
colinardo
Lösung colinardo 07.05.2015, aktualisiert am 08.05.2015 um 13:10:43 Uhr
Goto Top
Hallo abuelito,
Ich würde dies gerne mit VBA realisieren.
machen wir doch glatt face-smile / Kommentare siehe Code
remove_duplicates_271368.xlsm
Sub DeleteDuplicates()
    Dim dic As Object, rngDelete As Range, cell As Range
    Set dic = CreateObject("Scripting.Dictionary")  
    'Referenztabelle mit Daten Spalten aus A und C in Dictionary laden  
    With Sheets(2)
        For Each cell In .Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row)  
            strVal = cell.Value & "|" & cell.Offset(0, 2).Value  
            If Not dic.Exists(strVal) Then
                dic.Add strVal, ""  
            End If
        Next
    End With
    With Sheets(1)
        'Für jede belegte Zelle in Tabelle1  
        For Each cell In .Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row)  
            strVal = cell.Value & "|" & cell.Offset(0, 2).Value  
            'prüfe ob Kombination im Dictionary existiert  
            If dic.Exists(strVal) Then
                'Füge Zeile zu einem kombinierten Range zusammen  
                If Not rngDelete Is Nothing Then
                    Set rngDelete = Union(rngDelete, cell.EntireRow)
                Else
                    Set rngDelete = cell.EntireRow
                End If
            End If
        Next
    End With
    'Lösche die gespeicherten Zeilen auf einen Rutsch  
    If Not rngDelete Is Nothing Then
        rngDelete.Delete
    End If
End Sub
Grüße Uwe
abuelito
abuelito 08.05.2015 um 13:10:35 Uhr
Goto Top
Hallo Uwe,

super, vielen Dank. Klappt alles wunderbar.

Grüße
CaptnHowdy
CaptnHowdy 18.04.2019 um 06:47:13 Uhr
Goto Top
Hallo, ich habe das gleiche Anliegen. Allerdings müsste bei mir nur Tabelle 1 mit dem Namen “Variable“ lauten. Der zu überprüfen der Wert liegt in Spalte “N“ ab zelle N2.

Die zu löschenden Zeiten liegen in der Tabelle mit dem Namen “Export“.

Der zu überprüfen der Wert liegt hier in Spalte B.

Leider sind meine VBA Kenntnisse nicht besonders gut, bzw nicht vorhanden. Kann mir hier jemand helfen?