Excel Makro: Zusammenfassen von zwei Tabellen
Hallo liebe Community,
ich benötige mal wieder dringend Eure Hilfe. In einem aktuellen Projekt bekomme ich aus zwei Anwendungen jeweils eine Tabelle. Eine davon ist eine alte Version, die Andere die neue Version. Ich benötige Hilfe bei einem Makro, der den Inhalt aus der alten Tabelle mit den Inhalten der neuen Tabelle quasi aktuallisiert. Tabelle-Alt hat Spalten von A-P und Tabelle_Aktuallisiert von A-H. Die Spaltenüberschriften sind von A-H dabei identisch. Das Makro müsste anhand der Nummer in Spalte A in der Tabelle-Aktualisierung schauen, ob diese in der Tabelle-Alt vorhanden ist, wenn ja, die Informationen von der aktualisierten Tabelle in die Alte übertragen und sollte eine Nummer nicht vorhanden sein, die Zeile komplett zu übernehmen und ganz am Ende aus allem eine neue Tabelle machen. In anderen Worten: Tabelle_Alt + Tabelle_Aktualisiert = Tabelle_Neu. Im folgendem versuche ich das noch einmal zu visualisieren.
In diesem Bild haben wir die Tablle_Alt mit ein paar vorhandenen Daten.
Hier ist die Tabelle_Aktuallisiert, mit aktualisierten Zeilen oder sogar Neuen.
Aus diesen Beiden Tabellen muss nun eine komplett neue Tabelle erstellt werden, mit den aktuallsierten Daten. Die weiteren Spalten in Tabelle_Alt bleiben unverändert und bei komplett neuen Zeilen bleiben Diese leer. Ich denke diese Mathematische Ansicht ( Tabelle_Alt + Tabelle_Aktuallisiert = Tabelle_Neu) macht es ganz gut deutlich, was ich grob versuchen möchte.
Ich würde mich über schnelle Hilfe sehr sehr freuen!
Vielen Dank!
ich benötige mal wieder dringend Eure Hilfe. In einem aktuellen Projekt bekomme ich aus zwei Anwendungen jeweils eine Tabelle. Eine davon ist eine alte Version, die Andere die neue Version. Ich benötige Hilfe bei einem Makro, der den Inhalt aus der alten Tabelle mit den Inhalten der neuen Tabelle quasi aktuallisiert. Tabelle-Alt hat Spalten von A-P und Tabelle_Aktuallisiert von A-H. Die Spaltenüberschriften sind von A-H dabei identisch. Das Makro müsste anhand der Nummer in Spalte A in der Tabelle-Aktualisierung schauen, ob diese in der Tabelle-Alt vorhanden ist, wenn ja, die Informationen von der aktualisierten Tabelle in die Alte übertragen und sollte eine Nummer nicht vorhanden sein, die Zeile komplett zu übernehmen und ganz am Ende aus allem eine neue Tabelle machen. In anderen Worten: Tabelle_Alt + Tabelle_Aktualisiert = Tabelle_Neu. Im folgendem versuche ich das noch einmal zu visualisieren.
In diesem Bild haben wir die Tablle_Alt mit ein paar vorhandenen Daten.
Hier ist die Tabelle_Aktuallisiert, mit aktualisierten Zeilen oder sogar Neuen.
Aus diesen Beiden Tabellen muss nun eine komplett neue Tabelle erstellt werden, mit den aktuallsierten Daten. Die weiteren Spalten in Tabelle_Alt bleiben unverändert und bei komplett neuen Zeilen bleiben Diese leer. Ich denke diese Mathematische Ansicht ( Tabelle_Alt + Tabelle_Aktuallisiert = Tabelle_Neu) macht es ganz gut deutlich, was ich grob versuchen möchte.
Ich würde mich über schnelle Hilfe sehr sehr freuen!
Vielen Dank!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 791484408
Url: https://administrator.de/forum/excel-makro-zusammenfassen-von-zwei-tabellen-791484408.html
Ausgedruckt am: 14.04.2025 um 06:04 Uhr
7 Kommentare
Neuester Kommentar
Hallo,
ich bin zwar kein Fan von der Firma Chip , aber dummerweise steht dort eine einfache Lösung .
https://praxistipps.chip.de/excel-tabellen-vergleichen-und-zusammenfuehr ...
Ausser du meinst etwas anderes?
ich bin zwar kein Fan von der Firma Chip , aber dummerweise steht dort eine einfache Lösung .
https://praxistipps.chip.de/excel-tabellen-vergleichen-und-zusammenfuehr ...
Ausser du meinst etwas anderes?
Servus @Lukas2444 .
Zuerst einmal, vermeide bitte in Zukunft solche Titel wie "Brauche dringend Hilfe ...", das beschleunigt erstens die Antworten hier nicht (eher im Gegenteil) und zweitens lassen sich solche Beiträge später überhaupt nicht vernünftig finden geschweige denn man sieht auf einen Blick worum es in dem Beitrag geht! Ich habe den Titel daher schon mal für dich auf eine etwas passendere Überschrift korrigiert.
Back to Topic:
Man könnte das zwar auch ohne Makros, mit Powerquery lösen, aber da die Frage hier nach einem Makro gestellt wurde antworte ich auch mal mit etwas VBA zum Thema (Kommentare siehe Code) das du auf deine Bedürfnisse anpassen kannst:
Viel Erfolg
Grüße Uwe
Zuerst einmal, vermeide bitte in Zukunft solche Titel wie "Brauche dringend Hilfe ...", das beschleunigt erstens die Antworten hier nicht (eher im Gegenteil) und zweitens lassen sich solche Beiträge später überhaupt nicht vernünftig finden geschweige denn man sieht auf einen Blick worum es in dem Beitrag geht! Ich habe den Titel daher schon mal für dich auf eine etwas passendere Überschrift korrigiert.
Back to Topic:
Man könnte das zwar auch ohne Makros, mit Powerquery lösen, aber da die Frage hier nach einem Makro gestellt wurde antworte ich auch mal mit etwas VBA zum Thema (Kommentare siehe Code) das du auf deine Bedürfnisse anpassen kannst:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Sub MergeTables()
'Variablen
Dim wsOld As Worksheet, wsNew As Worksheet, wsMerged As Worksheet, cell As Range
' Tabellenzuweisung
' Alte Tabelle
Set wsOld = Sheets("Tabelle_Alt")
' Neue Tabelle
Set wsNew = Sheets("Tabelle_Neu")
' Zusammenfassung-Sheet erstellen/zuweisen
On Error Resume Next
Set wsMerged = Sheets("Zusammenfassung")
On Error GoTo 0
' Wenn das Zusammenfassungs Sheet noch nicht existiert erstelle es anhand einer Kopie mittels "wsOld"
If wsMerged Is Nothing Then
wsOld.Copy After:=Sheets(Sheets.Count)
Set wsMerged = Sheets(Sheets.Count)
wsMerged.Name = "Zusammenfassung"
End If
With wsNew
' Für jede Zelle im Bereich A2:A(n) des Sheets "wsNew"
For Each cell In .Range("A2:A" & .Cells(Rows.Count, "A").End(xlUp).Row)
' Wenn Zellwert nicht leer ist
If cell.Value <> "" Then
' finde im Zusamenfassungs-Sheet eine existierende Nummer
Set f = wsMerged.Range("A:A").Find(cell.Value, LookIn:=xlValues)
' Wenn dort keine gefunden wurde setze als Ziel die nächste freie Zeile
If f Is Nothing Then
Set f = wsMerged.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
End If
' kopiere Daten aus wsNew ans Ziel
cell.Resize(1, 8).Copy f
End If
Next
End With
End Sub
Grüße Uwe
Zitat von @Lukas2444:
Ich habe den Makro bei mir durchlaufen lassen, jedoch kopiert er lediglich Tabelle_Neu und von der Tabelle_Alt ist nichts zu sehen obwohl diese Werte ja noch kombiniert/ergänzt werden müssten. Muss ich noch etwas beachten?
Du hast die Namen der Sheets falsch den Variablen zugewiesen. Bitte den Code genau lesen und zuerst verstehen und nicht nur Copy-Paste machen!Ich habe den Makro bei mir durchlaufen lassen, jedoch kopiert er lediglich Tabelle_Neu und von der Tabelle_Alt ist nichts zu sehen obwohl diese Werte ja noch kombiniert/ergänzt werden müssten. Muss ich noch etwas beachten?
Funktioniert hier im Test einwandfrei.
Moin,
@colinardo hat dir ja die Musterlösung als Makro präsentiert
ICH versuche das aber erst mal alles via einfachen Funktionen zu lösen.
Nutze dazu einfach die Funktion Wenn() und dort dann mit dem SVERWEIS()
Über Wenn() ermittelst du das Delta und mit dem SVERWEIS holst du dir die richtigen Werte:
Vorteil: kein Makro erforderlich und es läuft überall, auch dort, wo selbst signierte Makros verboten sind
Nachteil: etwas mehr Arbeit…
Gruß
em-pie
@colinardo hat dir ja die Musterlösung als Makro präsentiert
ICH versuche das aber erst mal alles via einfachen Funktionen zu lösen.
Nutze dazu einfach die Funktion Wenn() und dort dann mit dem SVERWEIS()
Über Wenn() ermittelst du das Delta und mit dem SVERWEIS holst du dir die richtigen Werte:
Vorteil: kein Makro erforderlich und es läuft überall, auch dort, wo selbst signierte Makros verboten sind
Nachteil: etwas mehr Arbeit…
Gruß
em-pie