Microsoft Excel

Herbers Excel/VBA-Archiv

Daten aller Blätter in einem Blatt zusammenführen | Herbers Excel-Forum


Betrifft: Daten aller Blätter in einem Blatt zusammenführen von: joerg
Geschrieben am: 29.01.2010 21:34:03

Hallo,

Ich bräuchte eine Lösung, um die Daten aller Blätter in einem Blatt zusammenzuführen. Ich habe ca. 20 Blätter, jedes mit denselben 30 Spalten und max 2500 Zeilen, sollte also vom Platz her kein Problem geben.

Die Anzahl der Blätter und auch deren Namen sind allerdings variabel.

Die einzelnen Blätter haben jeweils zwei Zeilen Überschrift, diese sollen natürlich nicht mitkopiert werden bzw. es müsste nur einmal vom ersten Blatt Zeile 2 kopiert werden, weil in der Zusammenfassung daraus dann ein pivot-report gemacht werden soll.

Ich würde das ganze gern jedesmal updaten, wenn das Blatt mit der Zusammenführung aktiviert wird - wäre das machbar, von der Geschwindigkeit her?

Apropos Geschwindigkeit - in den Blättern stehen in diversen Spalten Formeln, teils recht komplexe. In der Zusammenfassung brauche ich aber eigentlich nur die Werte, könnte man daher das kopieren so machen, dass es wie 'Inhalte einfügen / Werte' funktioniert? (Mein Excel ist so schon ziemlich lahm, keine Ahnung warum...)

Hört sich alles ganz schön kompliziert an, aber ich glaube für euch alte VBA-Hasen ist das wahrscheinlich nur eine for...next-Schleife...?

Danke schonmal & Grüsse,
Jo

  

Betrifft: Zusammenfassung bei Blattaktivierung von: NoNet
Geschrieben am: 29.01.2010 21:48:07

Hallo Jo,

mit "For...Next"-Schleife liegst Du genau richtig ;-)
Kopiere den folgenden Code in das Klassenmodul des Tabellenblattes "Zusammenfassung" (also : Blattname im Blattregister unten per Rechts anklicken und "Code anzeigen..." auswählen) :

Private Sub Worksheet_Activate()
    Dim ws As Worksheet, intI As Integer, lngLZ As Long

    Cells.Clear 'Zuerst alles löschen
    
    For Each ws In Worksheets
        If ws.Name <> ActiveSheet.Name Then
            intI = intI + 1
            If intI = 1 Then
                ws.[A1].CurrentRegion.Copy
                ActiveSheet.[A1].PasteSpecial xlValues
            Else
                lngLZ = Cells.Find("*", SearchDirection:=xlPrevious).Row
                ws.[A1].CurrentRegion.Offset(2).Copy
                ActiveSheet.Cells(lngLZ + 1, 1).PasteSpecial xlValues
            End If
        End If
    Next
    Application.CutCopyMode = False
    [A1].Select
End Sub
Gruß, NoNet


  

Betrifft: AW: Zusammenfassung bei Blattaktivierung von: joerg
Geschrieben am: 29.01.2010 21:51:42

Ha! Sieht super aus, danke! :)))

Ich werd's gleich mal rüberkopieren und testen, allerdings habe ich noch längst nicht alle Daten in meinen Blättern zusammen - was meinst Du, ist das mit der Geschwindigkeit irgendwie kritisch?
(Habe eigentlich einen Raketenrechner, nur Excel hakt zB bei cut and paste manchmal ganz gewaltig...)

Danke nochmal,
Gruss, Jo


  

Betrifft: AW: Daten aller Blätter in einem Blatt zusammenführen von: Angelo Wi
Geschrieben am: 02.02.2010 09:53:47

Hallo NoNet

habe etwa 30 sheets - möchte aber nur die Daten von 10 sheets mit Blattnamen BL1, BL2, BL3 bis BL10 etc zusammenfassen im Sheet"Zusammenfassung"

was und wie muss ich den Code ändern ändern ?

Danke


  

Betrifft: AW: Daten aller Blätter in einem Blatt zusammenführen von: Renee
Geschrieben am: 02.02.2010 11:26:57

Hi Angelo,

ändere die ersten Zeilen des loops so:

For Each ws In Worksheets
        If Left(ws.Name, 2) = "BL" And _
           Val(Mid(ws.Name, 3)) > 0 And Val(Mid(ws.Name, 3)) < 11 Then
Das wie: ersetze im VBE die beiden Zeilen von NoNet. Weiterführende VB-Editor Kurse hier bei Herber oder im Internet ;-)

GreetZ Renée


Beiträge aus den Excel-Beispielen zum Thema "Daten aller Blätter in einem Blatt zusammenführen"