Wie kann ich eine Excel Tabelle automatisch auf mehrere Blätter aufteillen?

3 Antworten

Wenn es eine einmalige Aktion ist, würde ich das ehrlich gesagt von Hand machen. Es geht auch per Makro, dann sind allerdings einige Fragen zu klären:

Was genau soll kopiert werden, d.h. Zeilen sind klar, aber welche Spalten? Nur die Inhalte oder auch Formatierungen?

Sind es genau 400000 Zeilen bzw. was ist, wenn die Zahl nicht glatt durch 25000 teilbar ist? Auf die letzte Seite dazupackèn oder eine neue anfangen?

Ist die Datenquelle das erste Tabellenblatt? Sind die weiteren Tabellenblätter schon angelegt oder soll das auch im Makro passieren?

 


Iamiam  02.11.2016, 20:12

Da habe ich Deine AW vorher nicht gelesen, bin aber zu dem gleichen Urteil gekommen! (hab nur nochmal reingeschaut, weil ein anderer Kommentar (AW Tron) bewertet wurde, und hab dabei die AW mit Makro gesehen)

0

Ok, ich gehe jetzt mal davon aus das deine Tabelle in Zeile 1 eine Überschrift hat und diese und die nächsten 25000 in eine neue Datei abgelegt werden soll.

Sobald diese neue Datei dann erstellt ist, wird sie in einem von dir festgelegten Ordner abgelegt. Den Namen der Datei habe ich jetzt so eingebaut das du ihn über eine Inputbox selbst anlegen kannst. Ich dachte jetzt an sowas wie 1-25000, 25001-50000 usw.

Diese neue Datei wird wenn sie erstellt wurde auch gleich dort abgespeichert und geschlossen.

Bevor du das in deiner Original Datei einbaust, würde ich dir raten immer erst eine Sicherung von dieser zu erstellen und den Code vorher in der Kopie zu testen,

Das folgende Modul baust du bitte wie folgt in deine Kopie ein:

ALT+F11 und dann im linken Abschnitt mit der rechten Maustaste "Datei importieren"

Dort wird dann dieses Modul eingefügt, welches du hier findest:

http://workupload.com/file/7XUaZwb

Wenn du dich mit dem einfügen von Modulen auskennst kannst du auch den folgenden Code kopieren und einfügen.

Das Modul sieht wie folgt aus:

Beschreibung steht Fett dahinter, Fett und Kusiv musst du anpassen.

Sub teilen()

Rows("1:25001").Select ' Hier wird jetzt Zeile 1 bis 25001 gewählt
Selection.Copy 'schneidet die markierten Zeilen aus
Workbooks.Add 'Erstellt eine neue Arbeitsmappe
ActiveSheet.Paste 'Fügt die ausgeschnittenen Zeilen in die neue Arbeitsmappe ein
Range("A1").Select 'markiert die Zelle A1

'Ab jetzt kommt der Teil wo die neu erstellte Arbeitsmappe gespeichert wird
Dim strVerzeichnis As String
Dim strName As String
Dim strInbox As String
strName = InputBox("Bitte Namen eingeben") 'Da wird nachher im Makro der Name abgefragt wie die Datei heißen soll
strVerzeichnis = "C:\Users\Mimi\Desktop\Teilen\" 'Hier musst du dein Verzeichnis anlegen
ActiveWorkbook.SaveAs strVerzeichnis & strName & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close 'Schließt die neu erstellte Arbeitsmappe

Windows("Teilen_automatisch.xlsm").Activate 'Anpassen auf deine Original Datei
Rows("2:25001").Select 'Hier wird jetzt Zeile 2-25001 gelöscht, die Überschrift bleibt stehen
Selection.Delete Shift:=xlUp 'Hier werden die jetzt übertragenen 25000 Zeilen im Original entfernt
Range("A1").Select 'markiert die Zelle A1
End Sub

Falls du das ganze zum anschauen brauchst habe ich hier eine Musterdatei mit 100000 Zeilen zum testen.

http://workupload.com/file/6ft5f7G

Falls du nicht damit klar kommst immer raus damit.


schmiddi1967  01.11.2016, 19:36

Nachtrag:

Das Makro kannst du mit ALT+F8 oder über den Reiter Ansicht und da auf Makros ausführen.

Du kannst dir aber auch einfach eine kleine Form oder ein Button in die erste Zeile einbauen und das mit dem Makro belegen.

0
Iamiam  02.11.2016, 20:05
@schmiddi1967

Wenn man vom Lustgewinn beim Ausarbeiten eines Makros mal absieht: Es war sicher mehr Arbeit, das Makro auszuarbeiten (für Dich) und es zu installieren und zu testen (für Frager), als Aus der Datei 16x je einen Block mit 25000 Zeilen in je eine Neue Datei einzukopieren und ebensooft abzuspeichern. ;▬⌯((

ich bin sehr für Arbeitsersparnis, aber bei Dingen, die nicht allzu aufwändig sind, arbeite ich selbst meist lieber zu Fuß...

1
schmiddi1967  02.11.2016, 20:14
@Iamiam

Ich gehe eigentlich bei solchen Fragen immer davon aus, dass diese Suche dann öfter mal gebraucht wird.

Wenn nur einmalig ist wenigstens eine passende Antwort für jemanden da der das gleiche mal brauchen sollte.

Ja und vom Lustgewinn mal ganz abgesehen :)))))

1

Hallo,

Excel 2010 verfügt über 1.048.576 Zeilen, da ist noch Spielraum.

Falls es sich um eine bessere, Datenbereichfindung handelt folgender Vorschlag.

Du kannst eine Zusatzspalte kreieren bzw. einfügen indem der Bereich angegeben wird, z. B. in Zelle A1 "1 - 25000" eingeben, dann Zellen A1 bis A25000 markieren, unter "Ausrichtung" - "Verbinden und zentrieren", desweiteren in Zelle A25001 "25001 - 50000" eingeben, dann Zellen A25001 bis A50000 markieren und wie zuvor beschrieben verbinden, etc.

Wenn jetzt in Spalte A mit dem Cursor navigiert wird, erfolgt der Sprung zum nächsten Bereich (von A1 zu A25001, usw.).

Ansonsten könnte man das ganze auch so lösen:

Zellen A1 bis A400000 durchnummerieren, dann unter "Start" - "Bearbeiten" - "Suchen und Auswählen" - "Suchen nach:" z. B. die Zahl 5000 eingeben, dann springt der Cursor zu A5000.

Gruß Tron


Iamiam  01.11.2016, 16:46

Der Cursor springt auch zu A5000, wenn man das in das Namenfeld (links neben der Bearbeitungszeile) eingibt!

Das Zellen-verbinden vorher kann man sich also sparen.

1