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

Tabellenblätter und Spalten Vergleich

Tabellenblätter und Spalten Vergleich
16.01.2023 11:22:26
Sabine
Hallo zusammen,
ich hoffe auf Eure Hilfe.
Ich fange gerade erst mit VAB an und konnte nichts passendes im Internet finden.
Ich müsste zwei Tabellen miteinander abgleichen und in einer dritten Tabelle die Werte übertragen haben die nicht in der zweiten Tabelle vorkommen.
Hier etwas differenzierter.
Die Werte aus der Tabelle “SAP“, Spalte „C“ müssten abgeglichen werden mit den Werten aus Tabelle „SAP2“, Spalte „A“ .
Die Werte die dabei nicht in der Tabelle „SAP2“ vorkommen, müssten in Tabelle 3 „Vergleich“ mit den restlichen Daten aus den anderen Spalten übertragen werden.
Um den Abgleich zu starten möchte ich einen Botton benutzen der sich auf der Tabelle 3 „Vergleich“ befindet.
Eine Beispiel Mappe habe ich hier.
https://www.herber.de/bbs/user/157282.xlsx
Mit freundlichen Grüßen
Sabine

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter und Spalten Vergleich
16.01.2023 12:48:45
ChrisL
Hi
Man könnte es noch etwas effizienter coden, aber ChatGPT (Link im Forumstitel) spuckt einen brauchbaren Code aus.
cu
Chris
excel vba vergleiche spalte C in Tabelle SAP mit spalte A Tabelle SAP2 und liste in der Tabelle "Vergleich" alle die zeilen aus Tabelle SAP auf, welche nicht in SAP2 enthalten sind
Um in Excel VBA die Spalte C in Tabelle SAP mit Spalte A in Tabelle SAP2 zu vergleichen und alle Zeilen in der Tabelle "Vergleich" aufzulisten, die in SAP nicht in SAP2 enthalten sind, kann folgender Code verwendet werden:

Sub CompareColumns()
'Definieren der Variablen
Dim wsSAP As Worksheet
Dim wsSAP2 As Worksheet
Dim wsVergleich As Worksheet
Dim lastRowSAP As Long
Dim lastRowSAP2 As Long
Dim i As Long
Dim j As Long
Dim found As Boolean
'Setzen der Worksheets
Set wsSAP = ThisWorkbook.Sheets("SAP")
Set wsSAP2 = ThisWorkbook.Sheets("SAP2")
Set wsVergleich = ThisWorkbook.Sheets("Vergleich")
'Bestimmen der letzten belegten Zeile in Spalte C von SAP
lastRowSAP = wsSAP.Cells(wsSAP.Rows.Count, "C").End(xlUp).Row
'Bestimmen der letzten belegten Zeile in Spalte A von SAP2
lastRowSAP2 = wsSAP2.Cells(wsSAP2.Rows.Count, "A").End(xlUp).Row
'Schleife durch Spalte C von SAP
For i = 1 To lastRowSAP
found = False
'Schleife durch Spalte A von SAP2
For j = 1 To lastRowSAP2
'Vergleich der Werte
If wsSAP.Cells(i, "C").Value = wsSAP2.Cells(j, "A").Value Then
found = True
Exit For
End If
Next j
'Wenn der Wert in Spalte C von SAP nicht in Spalte A von SAP2 gefunden wurde, wird die Zeile in die Tabelle "Vergleich" kopiert
If found = False Then
wsSAP.Rows(i).Copy wsVergleich.Rows(wsVergleich.Cells(wsVergleich.Rows.Count, "A").End(xlUp).Row + 1)
End If
Next i
End Sub
Dieser Code muss in den VBA-Editor eingefügt und ausgeführt werden. Er setzt voraus, dass die Tabellen "SAP", "SAP2" und "Vergleich" im aktuellen Workbook vorhanden sind und Spalte C in Tabelle SAP und Spalte A in Tabelle SAP2 Werte enthalten.
Anzeige
AW: Tabellenblätter und Spalten Vergleich
17.01.2023 00:23:40
Yal
Hallo Sabine,
schön, wenn VBA lernen möchtest, aber dieses Problem ist zu passend für Power Query ("PQ"), um es mit VBA zu lösen.
Gemäß die gegebene Struktur der Antwortblatt, sind eher die "Einträge von SAP2, die keine Treffer in SAP haben" erwünscht, oder?
Korrigiere zuerst alle deine 31.02.20xx in 28.02.20xx (oder lasse es sogar lieber, um zu sehen, was passiert)
_ gehe ins Blatt "SAP", in A1
_ Menü "Einfügen", "Tabelle". Es fügt sich eine "intelligente" Tabelle, kurz Tabelle, mit dem Namen "Tabelle1" (in Menü Tabellentools)
_ das gleich in SAP2, die zweite Tabelle heisst "Tabelle2"
_ während noch auf Tabelle2, Menü "Daten", "aus Tabelle" wählen
_ Du bist in Power Query Editor. Die neue Abfrage heisst "Tabelle2"
_ Menü "Datei", "Schliessen & laden in...", "nur Verbindung"
_ auf Blatt "SAP"gehen, Menü "Daten", "Aus Tabelle", es erzeugt eine neue Power Query Abfrage "Tabelle1"
_ in der Abfrage "Tabelle1", markiere die 2 letzten Spalten "Begin" und "Ende",
_ Rechtsklick auf dem Überschrift, "Typ ändern", "Datum" (je nach dem ob Du den 31.Feb angepasst hast, eine andere Ergebnis. Ist aber hier null relevant)
_ Menü "Start", "Abfragen zusammenführen", "in eine neue Abfrage zusammenführen"
_ Oben "Tabelle2" einstellen, unten "Tabelle1",
_ in beiden die Spalte "ID" markieren
_ Join-Art "Linker Anti-Join(Zeilen nur in erster)" auswählen
_ die neue Spalte "Tabelle2" rechtsklicken und "entfernen"
_ Menü "Schliessen und laden in ...", "Nur Verbindung"
_ in Excel, die Abfrage "Merge1" rechtsklicken, "Laden in...", "Tabelle" auswählen. Zielstelle auswählen.
Fertig
Wenn die Quelle sich ändern (z.B. mal was an der ID ändern) auf die Ergebnis-Tabelle rechtsklicken und "aktualisiseren".
Probiere diese PQ-Lösung und die VBA-Lösung (den ChrisGTP-Code ;-)
Nach viele VBA-Jahre mache ich inzwischen nie VBA, da wo ich PQ verwenden kann.
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige