Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 2 Tabellen synchronisieren

2 Tabellen synchronisieren
28.01.2022 10:17:46
Tim
Hallo Liebe Excler,
Ich habe folgendes Problem. Ich habe eine Excel-Datei, in die ich in einem Arbeitsblatt in einer Tabelle neue Daten hinzufüge. Dabei füge ich die neue Zeile immer ganz oben ein (Rechtsklick - Zeile Einfügen)
Diesen neuen Datensatz möchte ich dann automatisch in der anderen Datei auch haben. Dabei reicht es mir wenn ich die andere Datei öffne und auf aktualisieren klicke.
Das Problem an der Geschichte: Die Tabelle der 2. Tabelle hat mehr Spalten, da dort noch Zusatzinfos zum Datensatz, welchen ich in der 1. Tabelle eingetragen habe, hinzugefügt werden. Bei allen meinen Lösungsversuchen wurden leider die Extra Spalten der 2. Tabelle nicht mitverschoben, sodass durch den neu übernommenen Datensatz diese Zusatzinfos in den Extra spalten beim falschen Datensatz waren...
Ich habe mal eine Datei mit 2 Beispielblättern eingefügt um mein Problem zu verdeutlichen. Ich bin dankbar für jede Hilfe!
https://www.herber.de/bbs/user/150739.xlsx
Viele Grüße,
Tim
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 2 Tabellen synchronisieren
28.01.2022 11:12:44
Rudi
Hallo,
teste mal:

Sub sync()
Dim rngC As Range, vntKey, vntValue
Dim objTab1 As Object, objTab2 As Object
Dim oOBJ
Dim lRow As Long
Set objTab1 = CreateObject("scripting.dictionary")
Set objTab2 = CreateObject("scripting.dictionary")
With Sheets("Tabelle1")
For Each rngC In .Range(.Cells(5, 1), .Cells(Rows.Count, 1).End(xlUp))
vntKey = Application.Transpose(Application.Transpose(rngC.Resize(, 5)))
vntKey = Join(vntKey, "|")
vntValue = Application.Transpose(Application.Transpose(rngC.Resize(, 8)))
vntValue = Join(vntValue, "|")
objTab1(vntKey) = vntValue
Next rngC
End With
With Sheets("Tabelle2")
For Each rngC In .Range(.Cells(5, 1), .Cells(Rows.Count, 1).End(xlUp))
vntKey = Application.Transpose(Application.Transpose(rngC.Resize(, 5)))
vntKey = Join(vntKey, "|")
vntValue = Application.Transpose(Application.Transpose(rngC.Resize(, 8)))
vntValue = Join(vntValue, "|")
objTab2(vntKey) = vntValue
Next rngC
End With
For Each oOBJ In objTab1
If objTab2.exists(oOBJ) Then
objTab1(oOBJ) = objTab2(oOBJ)
End If
Next oOBJ
lRow = 5
For Each oOBJ In objTab1
vntValue = Split(objTab1(oOBJ), "|")
Sheets("Tabelle2").Cells(lRow, 1).Resize(, UBound(vntValue) + 1) = vntValue
lRow = lRow + 1
Next oOBJ
End Sub
Geht aber nur von Tab1 nach Tab2.
Gruß
Rudi
Anzeige
AW: 2 Tabellen synchronisieren
28.01.2022 11:46:23
Tim
Hallo Rudi,
Vielen Dank erstmal!
Funktioniert das denn auch ohne VBA? Und falls nein, funktioniert dein Code auch bei 2 unterschiedlichen Dateien?
Viele Grüße,
Tim
AW: 2 Tabellen synchronisieren
28.01.2022 21:33:05
Rudi
Hallo,
1. möglicherweise mit Powerquery.Damit kenn ich mich aber nicht aus.
2. Ja. Dann müssen die Referenzen entsprechend angepasst werden.
Gruß
Rudi
Anzeige
AW: nachgefragt ...
29.01.2022 10:54:12
neopa
Hallo Tim,
... Deine Angaben sind zumindest für mich etwas missverständlich. Denn wenn Du den Datensatz Zeile 5 aus Blatt: Tabelle1 in Blatt Tabelle2 übernehmen willst, muss nichts "verschoben" werden. Oder soll jedoch der Transfer von Tabelle2 nach Tabelle1 erfolgen? Auch da muss nichts verschoben sondern nur Spalten ergänzt werden.
Weiter nachgefragt: Mit wie vielen Datensätzen ist denn ca. max zu rechnen und vor allem sollen auch Deine Kommentare mit übernommen werden? Im letzteren Fall ist weder eine Formellösung noch mW eine PowerQuery-Lösung möglich.
Gruß Werner
.. , - ...
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zwei Excel-Tabellen synchronisieren


Schritt-für-Schritt-Anleitung

Um zwei Excel-Tabellen zu synchronisieren, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Daten in der ersten Tabelle eingeben: Öffne deine erste Excel-Datei und füge einen neuen Datensatz in die Tabelle ein, indem du die Zeile ganz oben einfügst (Rechtsklick - Zeile Einfügen).

  2. VBA-Code verwenden: Wenn du die Daten in der zweiten Tabelle automatisch aktualisieren möchtest, kannst du den folgenden VBA-Code verwenden. Füge diesen in das VBA-Editorfenster ein (ALT + F11):

    Sub sync()
        Dim rngC As Range, vntKey, vntValue
        Dim objTab1 As Object, objTab2 As Object
        Dim oOBJ
        Dim lRow As Long
        Set objTab1 = CreateObject("scripting.dictionary")
        Set objTab2 = CreateObject("scripting.dictionary")
        With Sheets("Tabelle1")
            For Each rngC In .Range(.Cells(5, 1), .Cells(Rows.Count, 1).End(xlUp))
                vntKey = Application.Transpose(Application.Transpose(rngC.Resize(, 5)))
                vntKey = Join(vntKey, "|")
                vntValue = Application.Transpose(Application.Transpose(rngC.Resize(, 8)))
                vntValue = Join(vntValue, "|")
                objTab1(vntKey) = vntValue
            Next rngC
        End With
        With Sheets("Tabelle2")
            For Each rngC In .Range(.Cells(5, 1), .Cells(Rows.Count, 1).End(xlUp))
                vntKey = Application.Transpose(Application.Transpose(rngC.Resize(, 5)))
                vntKey = Join(vntKey, "|")
                vntValue = Application.Transpose(Application.Transpose(rngC.Resize(, 8)))
                vntValue = Join(vntValue, "|")
                objTab2(vntKey) = vntValue
            Next rngC
        End With
        For Each oOBJ In objTab1
            If objTab2.exists(oOBJ) Then
                objTab1(oOBJ) = objTab2(oOBJ)
            End If
        Next oOBJ
        lRow = 5
        For Each oOBJ In objTab1
            vntValue = Split(objTab1(oOBJ), "|")
            Sheets("Tabelle2").Cells(lRow, 1).Resize(, UBound(vntValue) + 1) = vntValue
            lRow = lRow + 1
        Next oOBJ
    End Sub
  3. Makro ausführen: Nachdem du den Code eingefügt hast, kannst du das Makro ausführen, um die Daten von Tabelle1 nach Tabelle2 zu synchronisieren.


Häufige Fehler und Lösungen

  • Fehler bei der Synchronisierung: Wenn die Daten nicht korrekt übertragen werden, überprüfe, ob die Spaltenüberschriften in beiden Tabellen übereinstimmen. Du musst sicherstellen, dass die Schlüsselwerte, die du synchronsieren möchtest, eindeutig sind.

  • Zusätzliche Spalten: Wenn in der zweiten Tabelle zusätzliche Spalten vorhanden sind, die nicht mit den Daten aus der ersten Tabelle synchronisiert werden, stelle sicher, dass diese Spalten nicht in den Bereich einbezogen werden, der im VBA-Code verarbeitet wird.


Alternative Methoden

  • Power Query verwenden: Eine weitere Möglichkeit, um Excel-Dateien zu synchronisieren, ist die Verwendung von Power Query. Damit kannst du Daten aus verschiedenen Quellen abrufen und transformieren. Dies ist eine benutzerfreundliche Methode, die keine Programmierkenntnisse erfordert.

  • Formeln nutzen: In einigen Fällen kannst du auch direkt Formeln verwenden, um Daten zwischen zwei Tabellen zu verknüpfen. Zum Beispiel mit der VERWEIS-Funktion oder SVERWEIS, um Daten aus einer Tabelle in die andere zu ziehen.


Praktische Beispiele

Ein Beispiel für die Synchronisation von Excel-Zellen:

  • Tabelle1: Enthält die folgenden Spalten: ID, Name, Alter
  • Tabelle2: Enthält die gleichen Spalten plus eine zusätzliche Spalte für Anmerkungen.

Wenn du einen neuen Datensatz in Tabelle1 hinzufügst, wird dieser automatisch in Tabelle2 aktualisiert, indem du die oben beschriebene Methode anwendest. Achte darauf, dass die IDs übereinstimmen, damit die Daten korrekt zugeordnet werden.


Tipps für Profis

  • Regelmäßige Backups: Stelle sicher, dass du regelmäßige Backups deiner Excel-Dateien machst, bevor du mit der Synchronisation beginnst.

  • Testumgebung: Teste den Synchronisationsprozess in einer Kopie deiner Datei, um sicherzustellen, dass alles wie gewünscht funktioniert, bevor du es auf die Hauptdatei anwendest.

  • Verwendung von Named Ranges: Benutze benannte Bereiche, um die Verwaltung deiner Daten zu erleichtern und die Lesbarkeit des Codes zu verbessern.


FAQ: Häufige Fragen

1. Funktioniert das auch ohne VBA? Ja, du kannst auch Power Query oder Formeln verwenden, um Excel-Tabelle zu synchronisieren, ohne VBA zu nutzen.

2. Kann ich auch zwei unterschiedliche Excel-Dateien synchronisieren? Ja, der VBA-Code lässt sich anpassen, um Daten zwischen zwei unterschiedlichen Excel-Dateien zu synchronisieren. Achte darauf, die Referenzen entsprechend anzupassen.

3. Was tun, wenn die Daten nicht korrekt synchronisiert werden? Überprüfe die Schlüsselwerte und stelle sicher, dass die Spaltenüberschriften in beiden Tabellen übereinstimmen, um eine fehlerfreie Synchronisation zu gewährleisten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige