Datensätze zusammenführen
#1
Hallo,
habe ein Problem mit der Zusammenführung der Datensätze aus drei Tabellen.

und zwar: die Datensätze werden ein einer Tabelle nicht vollständig übernommen - siehe Anhang - habe den Fehler nicht ermitteln können - vielleicht kann jemand mir bitte weiterhelfen - Danke!

Anbei die Datei!


Lg Ubi5


Sub TabellenZusammenfuehren()
    ' Deklariere Variablen
    Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet, wsZiel As Worksheet
    Dim letzteZeile1 As Long, letzteZeile2 As Long, letzteZeile3 As Long, i As Long

    ' Setze die Arbeitsblätter
    Set ws1 = ThisWorkbook.Sheets("Daten") ' Ersetze "Tabelle1"
    Set ws2 = ThisWorkbook.Sheets("Daten1") ' Ersetze "Tabelle2"
    Set ws3 = ThisWorkbook.Sheets("Daten2") ' Ersetze "Tabelle3"

    Set wsZiel = ThisWorkbook.Sheets("Daten3") ' Ersetze "ZielTabelle" oder erstelle ein neues Blatt

    ' Bestimme die letzte Zeile mit Daten in den Tabellen
    letzteZeile1 = ws1.Cells(Rows.Count, 1).End(xlUp).Row ' Spalte A
    letzteZeile2 = ws2.Cells(Rows.Count, 1).End(xlUp).Row ' Spalte A
    letzteZeile3 = ws3.Cells(Rows.Count, 1).End(xlUp).Row ' Spalte A

    ' Kopiere die Datensätze von Tabelle1 in ZielTabelle
    ws1.Range("A1:Z" & letzteZeile1).Copy wsZiel.Range("A1") ' Passe den Bereich an

    ' Kopiere die Datensätze von Tabelle2 in ZielTabelle
    ws2.Range("A1:Z" & letzteZeile2).Copy wsZiel.Range("A" & letzteZeile1 + 1) ' Passe den Bereich an und füge unterhalb an
   
    ' Kopiere die Datensätze von Tabelle3 in ZielTabelle
    ws3.Range("A1:Z" & letzteZeile3).Copy wsZiel.Range("A" & letzteZeile1 + 1) ' Passe den Bereich an und füge unterhalb an

   
    MsgBox "Daten erfolgreich zusammengeführt!", vbInformation
End Sub


Angehängte Dateien
.xlsm   Test1.xlsm (Größe: 28,04 KB / Downloads: 8)
Antworten Top
#2
Hi,

die letzte Zeile Deiner Zieltabelle ist nicht festgelegt, zumindest habe ich nichts dazu gefunden!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#3
moin,

es werden schon alle Daten kopiert
aber du ermittelst auf dem Blatt Daten die letzteZeile1 <-- das ist falsch
die musst du auf dem Zielblatt ermitteln und nach jedem Copy wieder neu

mfg Tom
Antworten Top
#4
Hi,

versuche es mal so:

Code:
Sub TabellenZusammenfuehren()
    ' Deklariere Variablen
    Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet, wsZiel As Worksheet
    Dim letzteZeile1 As Long, letzteZeile2 As Long, letzteZeile3 As Long, i As Long, letzteZeile4 As Long
   
    ' Setze die Arbeitsblätter
    Set ws1 = ThisWorkbook.Sheets("Daten") ' Ersetze "Tabelle1"
    Set ws2 = ThisWorkbook.Sheets("Daten1") ' Ersetze "Tabelle2"
    Set ws3 = ThisWorkbook.Sheets("Daten2") ' Ersetze "Tabelle3"

    Set wsZiel = ThisWorkbook.Sheets("Daten3") ' Ersetze "ZielTabelle" oder erstelle ein neues Blatt
    letzteZeile4 = wsZiel.Cells(Rows.Count, 1).End(xlUp).Row + 1
    ' Bestimme die letzte Zeile mit Daten in den Tabellen
    letzteZeile1 = ws1.Cells(Rows.Count, 1).End(xlUp).Row ' Spalte A
    letzteZeile2 = ws2.Cells(Rows.Count, 1).End(xlUp).Row ' Spalte A
    letzteZeile3 = ws3.Cells(Rows.Count, 1).End(xlUp).Row ' Spalte A

    ' Kopiere die Datensätze von Tabelle1 in ZielTabelle
    ws1.Range("A1:Z" & letzteZeile1).Copy wsZiel.Range("A1") ' Passe den Bereich an
    letzteZeile4 = wsZiel.Cells(Rows.Count, 1).End(xlUp).Row + 1
    ' Kopiere die Datensätze von Tabelle2 in ZielTabelle
    ws2.Range("A1:Z" & letzteZeile2).Copy wsZiel.Range("A" & letzteZeile1 + 1) ' Passe den Bereich an und füge unterhalb an
    letzteZeile4 = wsZiel.Cells(Rows.Count, 1).End(xlUp).Row + 1
     ' Kopiere die Datensätze von Tabelle3 in ZielTabelle
    ws3.Range("A1:Z" & letzteZeile3).Copy wsZiel.Range("A" & letzteZeile1 + 1) ' Passe den Bereich an und füge unterhalb an
    letzteZeile4 = wsZiel.Cells(Rows.Count, 1).End(xlUp).Row + 1
   
    MsgBox "Daten erfolgreich zusammengeführt!", vbInformation
End Sub
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#5
mein Vorschlag 

Code:
Sub TabellenZusammenfuehren()
    ' Deklariere Variablen
    Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet, wsZiel As Worksheet
    Dim letzteZeile1 As Long, letzteZeile2 As Long, letzteZeile3 As Long, i As Long
    Dim lngZiel As Long

    ' Setze die Arbeitsblätter
    Set ws1 = ThisWorkbook.Sheets("Daten") ' Ersetze "Tabelle1"
    Set ws2 = ThisWorkbook.Sheets("Daten1") ' Ersetze "Tabelle2"
    Set ws3 = ThisWorkbook.Sheets("Daten2") ' Ersetze "Tabelle3"

    Set wsZiel = ThisWorkbook.Sheets("Daten3") ' Ersetze "ZielTabelle" oder erstelle ein neues Blatt

    ' Bestimme die letzte Zeile mit Daten in den Tabellen
    letzteZeile1 = ws1.Cells(Rows.Count, 1).End(xlUp).Row ' Spalte A
    letzteZeile2 = ws2.Cells(Rows.Count, 1).End(xlUp).Row ' Spalte A
    letzteZeile3 = ws3.Cells(Rows.Count, 1).End(xlUp).Row ' Spalte A

    ' Kopiere die Datensätze von Tabelle1 in ZielTabelle
    ws1.Range("A1:Z" & letzteZeile1).Copy wsZiel.Range("A1") ' Passe den Bereich an
   
    With wsZiel
        lngZiel = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
       
        ' Kopiere die Datensätze von Tabelle2 in ZielTabelle
        ws2.Range("A1:Z" & letzteZeile2).Copy wsZiel.Range("A" & lngZiel) ' Passe den Bereich an und füge unterhalb an
       
            lngZiel = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
           
         ' Kopiere die Datensätze von Tabelle3 in ZielTabelle
        ws3.Range("A1:Z" & letzteZeile3).Copy wsZiel.Range("A" & lngZiel) ' Passe den Bereich an und füge unterhalb an
   
    End With
   
    MsgBox "Daten erfolgreich zusammengeführt!", vbInformation
End Sub

mfg Tom
Antworten Top
#6
Hallo Edgar, habe deinen Code probiert - leider gleiches Ergebnis wie bei mir.

Lg Ubi5
Antworten Top
#7
Hi,

klar, es müssen auch die Zeilen im Copy-Befehl geändert werden, statt letzteZeile1 muß es letzteZeile4 heißen:

Code:
Sub TabellenZusammenfuehren()
    ' Deklariere Variablen
    Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet, wsZiel As Worksheet
    Dim letzteZeile1 As Long, letzteZeile2 As Long, letzteZeile3 As Long, i As Long, letzteZeile4 As Long
   
    ' Setze die Arbeitsblätter
    Set ws1 = ThisWorkbook.Sheets("Daten") ' Ersetze "Tabelle1"
    Set ws2 = ThisWorkbook.Sheets("Daten1") ' Ersetze "Tabelle2"
    Set ws3 = ThisWorkbook.Sheets("Daten2") ' Ersetze "Tabelle3"

    Set wsZiel = ThisWorkbook.Sheets("Daten3") ' Ersetze "ZielTabelle" oder erstelle ein neues Blatt

    ' Bestimme die letzte Zeile mit Daten in den Tabellen
    letzteZeile1 = ws1.Cells(Rows.Count, 1).End(xlUp).Row ' Spalte A
    letzteZeile2 = ws2.Cells(Rows.Count, 1).End(xlUp).Row ' Spalte A
    letzteZeile3 = ws3.Cells(Rows.Count, 1).End(xlUp).Row ' Spalte A    letzteZeile4 = wsZiel.Cells(Rows.Count, 1).End(xlUp).Row + 1
    ' Kopiere die Datensätze von Tabelle1 in ZielTabelle
    ws1.Range("A1:Z" & letzteZeile1).Copy wsZiel.Range("A1") ' Passe den Bereich an
    letzteZeile4 = wsZiel.Cells(Rows.Count, 1).End(xlUp).Row + 1
    ' Kopiere die Datensätze von Tabelle2 in ZielTabelle
    ws2.Range("A1:Z" & letzteZeile2).Copy wsZiel.Range("A" & letzteZeile4)  ' Passe den Bereich an und füge unterhalb an
    letzteZeile4 = wsZiel.Cells(Rows.Count, 1).End(xlUp).Row + 1
     ' Kopiere die Datensätze von Tabelle3 in ZielTabelle
    ws3.Range("A1:Z" & letzteZeile3).Copy wsZiel.Range("A" & letzteZeile4)  ' Passe den Bereich an und füge unterhalb an
   
   
    MsgBox "Daten erfolgreich zusammengeführt!", vbInformation
End Sub
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#8
Danke Edgar - das funktioniert einwandfrei!

Lg Ubi5

97 97 97 97
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste