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-Key: 271368

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

Printed on: April 23, 2024 at 20:04 o'clock

Member: holli.zimmi
holli.zimmi May 07, 2015 at 13:38:54 (UTC)
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
Member: abuelito
abuelito May 07, 2015 at 13:52:20 (UTC)
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
Member: colinardo
Solution colinardo May 07, 2015, updated at May 08, 2015 at 11:10:43 (UTC)
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
Member: abuelito
abuelito May 08, 2015 at 11:10:35 (UTC)
Goto Top
Hallo Uwe,

super, vielen Dank. Klappt alles wunderbar.

Grüße
Member: CaptnHowdy
CaptnHowdy Apr 18, 2019 at 04:47:13 (UTC)
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?