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

Forumthread: Tabellen über Makro zusammenführen

Tabellen über Makro zusammenführen
14.06.2016 07:48:24
Philipp
Ich hab ein Problem mit Excel 2010 bzw einem Makro wo ich keine Ahnung habe das zu realisieren.
Es geht darum dass ich in einem Excelfile zwei Tabellen habe die wöchentlich upgedatet werden.
Damit ich mit den Daten arbeiten kann müssen diese beiden Tabellen in einer bestehenden dritten (final data) zusammengefasst werden.
Die erste Zeile (Überschrift) darf nicht übertragen werden.
Die erste Tabelle (dev data) hat die Spalten A-R befüllt
Die zweite Tabelle (inv data) die Spalten A-J
Die Zugehörigkeit der jeweiligen Zeilen in den beiden Tabellen ist über eine Nummer gegeben.
Diese Nummer ist in „dev data“ in Spalte A
In „inv data“ in Spalte B
Wenn die beiden Tabellen zusammengeführt wurden (also Zeile für Zeile) brauche ich jedoch zwischen den beiden Tabellen eine Spalte abstand.
Ab Spalte AA in der dritten Tabelle (final data) sind Formeln hinterlegt die auf die Daten der anderen Spalten zugreifen.
Ich kenn mich mit Makros absolut Null aus denke aber dass dies mit einem Makro am einfachsten zu erfüllen ist.
Kann mir da jemand von euch helfen?
Lg
phil

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Klärungsbedarf
14.06.2016 08:49:39
MB12
Hallo Phil,
Du schreibst:
"Wenn die beiden Tabellen zusammengeführt wurden (also Zeile für Zeile)"
1. sind das 3 verschiedene Dateien oder 3 Tabellenblätter in einer Datei?
2. sollen zuerst die Daten aus dev eingefügt werden und darunter die aus inv, und zwar jeweils ab Spalte A?
Denn wenn du ab Spalte AA in final data Formeln hinterlegt hast, kannst du hier keine Daten einkopieren, da dann die Formeln weg wären. Sonst müssten Spalten eingefügt werden, dann rutschen die Formeln nach rechts.
3. sind in final data bereits Überschriften drin?
Am besten wäre es, eine Beispieldatei mit 4-5 Datensätzen - anonymisiert, aber incl. der Formeln - hochzuladen mit dem gewünschten Ergebnis.
Gruß, Margarete

Anzeige
AW: Tabellen über Makro zusammenführen
14.06.2016 13:30:07
Philipp
Ich habe ein Testfile erstellt
kurz zur Erklärung:
alle Tabellen befinden sich in einem File
Die Tabelle "dev data" soll als erste in die Tabelle "final data" übertragen werden.
Danach die Tabelle "inv data" in die Tabelle "final data" wobei die einzelnen Zeilen zugehörig zu den Zeilen der zuvor importierten "dev data" zusammengesetzt werden müssen.
Die Zugehörigkeit der einzelnen Zeilen ist über die ID gewährleistet. diese ist in der Tabelle "dev data" die Spalte A, bei der Tabelle "inv data" die Spalte B.
Die Tabellen "dev data" und "inv data" werden über ein anderes System importiert. daher kann ich hier nichts ändern an Spaltenbezeichnung oder Abfolge
Die Tabelle "final data" hat vorgegebene Überschriften und Formeln die nicht verändert werden dürfen.
Die Tabelle "final data" im Testfile sieht so aus wie es im endeffekt sein sollte. wenn also in der Tabelle "inv data" keine passende ID zur "Dev data" gefunden wurde bleibt die Zeile hinten leer.
https://www.herber.de/bbs/user/106224.xlsx

Anzeige
@alle: INDEX VERGLEICH oder VBA?
14.06.2016 14:37:31
MB12
Hallo Phil, hallo alle,
muss jetzt mein Notebook plattmachen (neues Betriebssystem, bitte Daumen drücken).
Könnte jemand übernehmen?
DANKE SCHÖN
Gruß, Margarete

Mit VBA...
14.06.2016 16:37:26
Michael
Hallo Philipp!
Test mal (auf Basis Deiner Bsp-Datei):
Code muss in ein allgemeines Modul (in der XL-Mappe Alt + F11 aufrufen, Einfügen - Modul, Code hineinkopieren)
Sub a()
'Daten aus 1. Quell-Blatt in Ziel-Blatt übertragen (nur Werte und Zahl-Formate)
'Daten aus 2. Quell-Blatt gemäß Identifikation (Spalte B) in Ziel-Blatt übertragen
'in passende Zeile zu den bereits kopierten Daten aus 1. Quell-Blatt
Dim Wb As Workbook
Dim WsQ1 As Worksheet
Dim rQ1 As Range
Dim WsQ2 As Worksheet
Dim WsZ As Worksheet
Dim rZ As Range
Dim f As Range
Dim fZ As Long
Dim clc
With Application
.ScreenUpdating = False
clc = .Calculation
.Calculation = xlCalculationManual
End With
Set Wb = ThisWorkbook
With Wb
Set WsQ1 = .Worksheets("dev data") '1. Quell-Blatt, ggf. anpassen
Set WsQ2 = .Worksheets("inv data") '2. Quell-Blatt, ggf. anpassen
Set WsZ = .Worksheets("final data") 'Ziel-Blatt, ggf. anpassen
End With
With WsQ1
Set rQ1 = .Range("A2:Q" & .Cells(.Rows.Count, 1).End(xlUp).Row)
rQ1.Copy
WsZ.Range("A2").PasteSpecial xlPasteValuesAndNumberFormats
End With
With WsQ2
For Each rZ In .Range("B2:B" & .Cells(.Rows.Count, 2).End(xlUp).Row)
With WsZ.Range("A2:A" & WsZ.Cells(WsZ.Rows.Count, 1).End(xlUp).Row)
Set f = .Find(rZ.Value, LookIn:=xlValues)
If Not f Is Nothing Then
fZ = f.Row
End If
End With
.Range("A" & rZ.Row & ":J" & rZ.Row).Copy
WsZ.Range("S" & fZ).PasteSpecial xlPasteValuesAndNumberFormats
Next rZ
End With
Set Wb = Nothing
Set WsQ1 = Nothing
Set rQ1 = Nothing
Set WsQ2 = Nothing
Set WsZ = Nothing
Set rZ = Nothing
Set f = Nothing
With Application
.ScreenUpdating = True
.Calculation = clc
End With
End Sub
Passt?
LG
Michael

Anzeige
AW: Mit VBA...
15.06.2016 10:50:52
Philipp
Hallo
Ich bekomm leider eine Fehlermeldung wenn ich das Makro ausführe :(
siehe Bilddatei
Userbild
lg
Phil

AW: Mit VBA...
15.06.2016 11:13:14
Philipp
NEIN!
ich muss mich entschuldigen.
es war mein Fehler bei der Testung des Makros.
ich habe übersehen dass ich teilweise doppelte Dateneinträge habe in der Testversion.
Es funktionirt prima.
HERZLICHEN DANK

Anzeige
Gern! LG und owT
15.06.2016 12:49:12
Michael
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
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

Tabellen über Makro zusammenführen


Schritt-für-Schritt-Anleitung

Um zwei Excel-Tabellen mithilfe eines Makros zusammenzuführen, befolge diese Schritte:

  1. Öffne Excel und lade die Arbeitsmappe, die die Tabellen "dev data" und "inv data" enthält.

  2. Öffne den VBA-Editor: Drücke Alt + F11.

  3. Füge ein neues Modul hinzu: Klicke auf Einfügen > Modul.

  4. Kopiere den folgenden VBA-Code und füge ihn in das Modul ein:

    Sub a()
    'Daten aus 1. Quell-Blatt in Ziel-Blatt übertragen (nur Werte und Zahl-Formate)
    'Daten aus 2. Quell-Blatt gemäß Identifikation (Spalte B) in Ziel-Blatt übertragen
    'in passende Zeile zu den bereits kopierten Daten aus 1. Quell-Blatt
    Dim Wb As Workbook
    Dim WsQ1 As Worksheet
    Dim rQ1 As Range
    Dim WsQ2 As Worksheet
    Dim WsZ As Worksheet
    Dim rZ As Range
    Dim f As Range
    Dim fZ As Long
    Dim clc
    With Application
    .ScreenUpdating = False
    clc = .Calculation
    .Calculation = xlCalculationManual
    End With
    Set Wb = ThisWorkbook
    With Wb
    Set WsQ1 = .Worksheets("dev data") '1. Quell-Blatt, ggf. anpassen
    Set WsQ2 = .Worksheets("inv data") '2. Quell-Blatt, ggf. anpassen
    Set WsZ = .Worksheets("final data") 'Ziel-Blatt, ggf. anpassen
    End With
    With WsQ1
    Set rQ1 = .Range("A2:Q" & .Cells(.Rows.Count, 1).End(xlUp).Row)
    rQ1.Copy
    WsZ.Range("A2").PasteSpecial xlPasteValuesAndNumberFormats
    End With
    With WsQ2
    For Each rZ In .Range("B2:B" & .Cells(.Rows.Count, 2).End(xlUp).Row)
    With WsZ.Range("A2:A" & WsZ.Cells(WsZ.Rows.Count, 1).End(xlUp).Row)
    Set f = .Find(rZ.Value, LookIn:=xlValues)
    If Not f Is Nothing Then
    fZ = f.Row
    End If
    End With
    .Range("A" & rZ.Row & ":J" & rZ.Row).Copy
    WsZ.Range("S" & fZ).PasteSpecial xlPasteValuesAndNumberFormats
    Next rZ
    End With
    Set Wb = Nothing
    Set WsQ1 = Nothing
    Set rQ1 = Nothing
    Set WsQ2 = Nothing
    Set WsZ = Nothing
    Set rZ = Nothing
    Set f = Nothing
    With Application
    .ScreenUpdating = True
    .Calculation = clc
    End With
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Führe das Makro aus: Drücke Alt + F8, wähle a aus und klicke auf Ausführen.

Das Makro überträgt die Daten aus "dev data" und "inv data" in die Tabelle "final data", wobei die Zugehörigkeit über die ID sichergestellt wird.


Häufige Fehler und Lösungen

  • Fehlermeldung beim Ausführen des Makros: Überprüfe, ob du doppelte Dateneinträge in deinen Daten hast. Diese können zu Fehlern führen.
  • Formeln in der Ziel-Tabelle verschwinden: Achte darauf, dass du die Daten nicht in Spalten kopierst, in denen bereits Formeln stehen. Das Makro muss so angepasst werden, dass es Platz für die Formeln lässt.

Alternative Methoden

Falls du kein Makro verwenden möchtest, kannst du die Excel-Funktionen SVERWEIS oder INDEX und VERGLEICH verwenden, um die Daten manuell zu vergleichen und zusammenzuführen.

Beispiel für die Verwendung von SVERWEIS:

=SVERWEIS(B2; 'dev data'!A:B; 2; FALSCH)

Diese Funktion sucht in der "dev data" nach der ID und gibt die entsprechenden Werte zurück.


Praktische Beispiele

Angenommen, du hast folgende Daten in "dev data":

A (ID) B (Wert)
1 100
2 200

Und in "inv data":

B (ID) C (Wert)
1 300
3 400

Nach der Ausführung des Makros wird "final data" wie folgt aussehen:

A (ID) B (Wert dev) S (Wert inv)
1 100 300
2 200

Tipps für Profis

  • Verwende strukturierte Daten: Achte darauf, dass deine Daten in Tabellenform vorliegen. Das erleichtert die Arbeit mit VBA.
  • Debugging: Wenn das Makro nicht funktioniert, kannst du den Code Zeile für Zeile durchlaufen, um Fehler zu finden (F8 im VBA-Editor).
  • Sichere deine Daten: Vor dem Ausführen von Makros ist es sinnvoll, ein Backup deiner Arbeitsmappe zu erstellen.

FAQ: Häufige Fragen

1. Kann ich das Makro auch in späteren Excel-Versionen verwenden?
Ja, das Makro sollte auch in neueren Versionen von Excel funktionieren, solange die Struktur der Tabellen gleich bleibt.

2. Was mache ich, wenn ich weitere Tabellen zusammenführen möchte?
Du kannst das Makro anpassen, indem du zusätzliche Copy-Befehle für die weiteren Tabellen hinzufügst, ähnlich wie es für "dev data" und "inv data" gemacht wurde.

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