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 SubGruß, 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 ThenDas wie: ersetze im VBE die beiden Zeilen von NoNet. Weiterführende VB-Editor Kurse hier bei Herber oder im Internet ;-)