Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA 2 Tabellen zusammenführen und aktualisieren

VBA 2 Tabellen zusammenführen und aktualisieren
30.05.2015 14:00:17
Emre
Hallo,
ich bin neu hier und weiß ehrlich gesagt auch nicht ob ich in den richtigen Bereich schreibe.
Auf jeden Fall habe ich schon sehr viel im Netz gesucht, bin auch ein bisschen fündig geworden, aber so richtig weit bin ich nicht gekommen.
Es geht um folgendes, ich bin Werkstudent und habe die Aufgabe von meinem Betreuer einen Ablauf per VBA zu automatisieren. Es befinden sich 2 Listen. Die eine größere knapp 2000 Zeilen soll alle paar Monate durch eine kleinere Liste (knapp 300 Zeilen) aktualisiert werden. In der größeren Liste müssen auch manchmal Leute entfernt werden z.B. die Personen, die nicht mehr beim Unternehmen tätig sind. Oder wenn jemand mal die Abteilung wechselt, soll sich die Bezeichnung der Abteilung dann auch automatisch ändern. Die Listen werden aus Outlook gezogen und dann eben in Excel verarbeitet.
Von mir verlangt wird, dass ich den oben geschilderten Ablauf automatisiere, also das die große Liste von Outlook gezogen wird, dann mit der kleinen Liste (auch von Outlook) zusammen in Excel zusammengeführt wird. Dazu noch, dass die Personen die in der kleinen Liste sich befinden aber nicht in der großen Liste sind, ein X bekommen als Kennzeichnung.
Die letzte Woche habe ich das manuell gemacht und das war echt schlimm, daher die Automation. Der Aufbau der Listen ist gleich.
Hoffe, habe mein Problem schildern können. Wäre für eine Hilfe sehr dankbar.
MfG

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA 2 Tabellen zusammenführen und aktualisieren
30.05.2015 14:05:19
Emre
Noch etwas bevor ich es vergesse. Den folgenden Code habe ich im Internet gefunden und ein wenig erweitert. Er macht die Zusammenführung eigentlich ganz gut nur an manchen Stellen, ich vermute wenn eine es leere Zellen gibt, kommt er durcheinander und übernimmt bei der Zusammenführung nicht alles.
Es war eigentlich nur die erste Spalte die zusammengeführt wurde, habe die anderen Schleifen dann selber hinzugefügt und eben das Problem bekommen.
Public Sub Zusammenfuehren()
Dim aTabellen  As Variant   ' die Namen der zusammenzuführenden Tabellenblätter
Dim iBlatt     As Integer   ' der For/Next Index zum Array
Dim lZeile_Q   As Long      ' For/Next Schleifen-Index Zeilen Quell-Tabelle
Dim lZeile_Z   As Long      ' Ausgabe-Zeilen der Ziel-Tabelle
Dim WkSh_Z     As Worksheet ' die Ziel-Tabelle
Application.ScreenUpdating = False
'      im nachfolgenden Array können beliebig viele Tabellenblätter, deren
'      Inhalt zusammengeführt werden soll aufgezählt werden
aTabellen = Array("Tabelle1", "Tabelle2")
Set WkSh_Z = Worksheets("Tabelle3") ' das Ziel-Tabellenblatt - Namen ggf. anpassen !!!
For iBlatt = 0 To UBound(aTabellen)
With Worksheets(aTabellen(iBlatt))
For lZeile_Q = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
If Application.WorksheetFunction.CountIf(WkSh_Z.Columns(1), _
.Range("A" & lZeile_Q).Value) = 0 Then
lZeile_Z = lZeile_Z + 1
WkSh_Z.Range("A" & lZeile_Z).Value = .Range("A" & lZeile_Q).Value
End If
If Application.WorksheetFunction.CountIf(WkSh_Z.Columns(2), _
.Range("B" & lZeile_Q).Value) = 0 Then
lZeile_Z = lZeile_Z + 0
WkSh_Z.Range("B" & lZeile_Z).Value = .Range("B" & lZeile_Q).Value
End If
If Application.WorksheetFunction.CountIf(WkSh_Z.Columns(3), _
.Range("C" & lZeile_Q).Value) = 0 Then
lZeile_Z = lZeile_Z + 0
WkSh_Z.Range("C" & lZeile_Z).Value = .Range("C" & lZeile_Q).Value
End If
If Application.WorksheetFunction.CountIf(WkSh_Z.Columns(4), _
.Range("D" & lZeile_Q).Value) = 0 Then
lZeile_Z = lZeile_Z + 0
WkSh_Z.Range("D" & lZeile_Z).Value = .Range("D" & lZeile_Q).Value
End If
If Application.WorksheetFunction.CountIf(WkSh_Z.Columns(5), _
.Range("E" & lZeile_Q).Value) = 0 Then
lZeile_Z = lZeile_Z + 0
WkSh_Z.Range("E" & lZeile_Z).Value = .Range("E" & lZeile_Q).Value
End If
If Application.WorksheetFunction.CountIf(WkSh_Z.Columns(6), _
.Range("F" & lZeile_Q).Value) = 0 Then
lZeile_Z = lZeile_Z + 0
WkSh_Z.Range("F" & lZeile_Z).Value = .Range("F" & lZeile_Q).Value
End If
If Application.WorksheetFunction.CountIf(WkSh_Z.Columns(7), _
.Range("G" & lZeile_Q).Value) = 0 Then
lZeile_Z = lZeile_Z + 0
WkSh_Z.Range("G" & lZeile_Z).Value = .Range("G" & lZeile_Q).Value
End If
Next lZeile_Q
End With
Next iBlatt
Application.ScreenUpdating = True
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA für das Zusammenführen und Aktualisieren von zwei Tabellen


Schritt-für-Schritt-Anleitung

Um zwei Excel-Tabellen mithilfe von VBA zusammenzuführen, kannst du folgenden Schritt-für-Schritt-Plan nutzen:

  1. Öffne Excel und erstelle ein neues Arbeitsblatt oder öffne die vorhandenen Arbeitsblätter, die die Daten enthalten.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Erstelle ein neues Modul:

    • Rechtsklicke im Projekt-Explorer auf „VBAProject (DeineDatei.xlsx)“.
    • Wähle „Einfügen“ > „Modul“.
  4. Füge den bereitgestellten VBA-Code in das Modul ein:

    Public Sub Zusammenfuehren()
       Dim aTabellen As Variant
       Dim iBlatt As Integer
       Dim lZeile_Q As Long
       Dim lZeile_Z As Long
       Dim WkSh_Z As Worksheet
       Application.ScreenUpdating = False
    
       aTabellen = Array("Tabelle1", "Tabelle2")
       Set WkSh_Z = Worksheets("Tabelle3")
    
       For iBlatt = 0 To UBound(aTabellen)
           With Worksheets(aTabellen(iBlatt))
               For lZeile_Q = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
                   If Application.WorksheetFunction.CountIf(WkSh_Z.Columns(1), .Range("A" & lZeile_Q).Value) = 0 Then
                       lZeile_Z = lZeile_Z + 1
                       WkSh_Z.Range("A" & lZeile_Z).Value = .Range("A" & lZeile_Q).Value
                   End If
                   ' Weitere Spalten können hier hinzugefügt werden
               Next lZeile_Q
           End With
       Next iBlatt
       Application.ScreenUpdating = True
    End Sub
  5. Passe die Tabellennamen in der aTabellen-Array-Zeile an, um sie an deine echten Tabellennamen anzupassen.

  6. Schließe den VBA-Editor und kehre zurück zu Excel.

  7. Starte das Makro über Entwicklertools > Makros und wähle Zusammenfuehren.


Häufige Fehler und Lösungen

  • Fehler: "Objektvariable oder With-Blockvariable nicht gesetzt"

    • Lösung: Stelle sicher, dass die Ziel-Tabelle existiert und der Name korrekt ist.
  • Fehler: "Typen unverträglich"

    • Lösung: Überprüfe die Datentypen der Spalten, die du zusammenführst, um sicherzustellen, dass sie übereinstimmen.
  • Leere Zellen werden nicht korrekt behandelt

    • Lösung: Modifiziere die Schleife, um leere Zellen zu ignorieren oder spezifische Bedingungen hinzuzufügen.

Alternative Methoden

Falls du VBA nicht verwenden möchtest, kannst du auch die folgenden Methoden ausprobieren:

  • Power Query: Ideal für das Zusammenführen von Excel-Tabellen. Du kannst die Abfragen in Power Query so einstellen, dass sie die Daten automatisch aktualisieren.
  • Excel-Funktionen: Verwende Funktionen wie VLOOKUP oder INDEX und MATCH, um Daten aus verschiedenen Tabellen zu vergleichen und zusammenzuführen.

Praktische Beispiele

Angenommen, du hast zwei Tabellen, die Mitarbeiterdaten enthalten. Tabelle1 hat die aktuellen Mitarbeiter und Tabelle2 hat die neuen Mitarbeiter. Du möchtest die aktuellen Daten in Tabelle3 zusammenführen:

  • Tabelle1 (Aktuelle Mitarbeiter): Name Abteilung
    Max IT
    Lisa HR
  • Tabelle2 (Neue Mitarbeiter): Name Abteilung
    Tom Marketing
    Lisa HR

Das Ziel ist es, alle Mitarbeiter in Tabelle3 zu haben, ohne Duplikate.


Tipps für Profis

  • Verwende Union: Um Daten aus mehreren Bereichen zusammenzuführen, kannst du die Union-Funktion nutzen, um die Effizienz des Codes zu verbessern.
  • Automatisiere den Prozess: Füge einen Button in dein Excel-Dokument ein, der das Makro beim Klicken ausführt.
  • Regelmäßige Sicherung: Speichere deine Arbeitsdatei regelmäßig, insbesondere bevor du Makros ausführst.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Daten immer aktuell sind? Du kannst das Makro so einstellen, dass es beim Öffnen der Arbeitsmappe automatisch ausgeführt wird.

2. Funktioniert dieser Prozess auch für Pivot-Tabellen? Ja, du kannst die zusammengeführten Daten auch in eine Pivot-Tabelle umwandeln, um die Analyse zu erleichtern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige