Ich habe ein Excel-Dokument mit über 30 Blättern. Jedes hat das gleiche Layout: eine einfache Tabelle mit den gleichen Spalten, Kopfzeilen/Gesamtzeilen, aber unterschiedlicher Zeilenanzahl (keines hat mehr als 500 Zeilen).
Ich möchte sie zu einer Mastertabelle kombinieren. Nur ein einmaliger Vorgang.
Manuell könnte ich 30 Tabellen nacheinander in ein neues Arbeitsblatt kopieren. Wenn ich fertig bin, sortiere ich und lösche alle leeren Zeilen/Kopfzeilen/Gesamtzeilen. Die Formatierung ist mir egal. Ich schätze, ich würde dafür etwa 15 bis 20 Minuten brauchen, aber es besteht immer das Risiko, dass ich einen Fehler mache und ein Blatt oder so etwas übersehe.
VBA klingt, als würde es zu viel Zeit in Anspruch nehmen. Im Moment überlege ich fast, die Arbeitsmappe in SQL Server zu importieren, sie mit UNION zu verknüpfen und das Ergebnis per Copy-and-paste wieder in Excel einzufügen.
Kennst du irgendwelche guten Tricks?
Antwort1
Wenn Sie dies häufig tun müssen, empfehle ich Ihnen, eine schnelle VBA-Routine zu schreiben. Wenn es nur einmalig ist, würde ich es einfach manuell tun. Um sicherzustellen, dass Sie nicht versehentlich eine Tabelle überspringen, verwenden Sie Ausschneiden und Einfügen statt Kopieren und Einfügen.
So würde ich es machen. Mit Tastaturkürzeln geht es ziemlich schnell.
- Öffnen Sie die ursprüngliche Arbeitsmappe in Excel schreibgeschützt, um einen versehentlichen Datenverlust zu verhindern.
- Öffnen Sie eine neue Arbeitsmappe, in der die neue Mastertabelle gespeichert wird.
- Schließen Sie alle anderen Arbeitsmappen, damit Sie problemlos zwischen den beiden Arbeitsmappen wechseln können, mit denen Sie gerade arbeiten.
- Wählen Sie das erste Arbeitsblatt in der Originalarbeitsmappe aus, das Sie kopieren möchten.
Jetzt können Sie mit der Verwendung von Tastaturkürzeln beginnen.
Ctrl + Home
um zur oberen linken Ecke der Tabelle zu springen. (Dadurch wird zu A1 gesprungen, sofern dort keine Zeilen oder Spalten fixiert sind.)Shift + Ctrl + End
um alles links und unterhalb der aktuell ausgewählten Zelle auszuwählen.Ctrl + X
um die Daten auszuschneiden.Ctrl + Tab
, um zur neuen Arbeitsmappe zu wechseln.- Überprüfen Sie noch einmal, ob Sie sich am richtigen Ort befinden, und drücken Sie ,
Enter
um die Daten einzufügen. Ctrl + End
um zur letzten eingefügten Zelle zu gelangen.Down Arrow
um zur nächsten nicht verwendeten Zeile zu gelangen.Ctrl + Left Arrow
um zur Spalte A zurückzukehren.Ctrl + Tab
, um zur ursprünglichen Arbeitsmappe zurück zu wechseln.Ctrl + Page Down
, um das nächste Arbeitsblatt auszuwählen.- Gehen Sie zurück zu Schritt 1 und wiederholen Sie den Vorgang, bis Sie fertig sind.
Wenn Sie fertig sind, können Sie Ctrl + Page Up
alle ursprünglichen Arbeitsblätter durchgehen und überprüfen, ob alle Daten entfernt wurden.
Vorausgesetzt, Ihre Titelzeile ist nicht eingefroren, wird hierdurch die Titelzeile aus allen 30 Tabellen kopiert. In diesem Fall sortieren Sie entweder die Haupttabelle, um alle doppelten Titelzeilen zu gruppieren und die zusätzlichen zu löschen, oder verwenden Sie Daten -> Duplikate entfernen.
Wenn Sie versehentlich einen Schritt überspringen oder vorhandene Daten überschreiben, drücken Sie , Ctrl + Z
um den Vorgang rückgängig zu machen.
Ich habe gerade einen Test mit den oben genannten Schritten durchgeführt. Die von mir verwendete Arbeitsmappe hatte 10 Arbeitsblätter mit jeweils 120 Datenzeilen. Ich habe 1 ½ Minuten gebraucht, um die Haupttabelle zu erstellen. Wenn Sie mit Tastaturkürzeln nicht vertraut sind, kann es doppelt so lange dauern. Bei 30 Arbeitsblättern würde ich schätzen, dass Sie 10 Minuten brauchen.
Antwort2
Ich habe das gleiche Problem und hier ein tolles Makro gefunden: http://excel.tips.net/T003005_Condensing_Multiple_Worksheets_Into_One.html
Sub Combine()
Dim J As Integer
On Error Resume Next
Sheets(1).Select
Worksheets.Add ' add a sheet in first place
Sheets(1).Name = "Combined"
' copy headings
Sheets(2).Activate
Range("A1").EntireRow.Select
Selection.Copy Destination:=Sheets(1).Range("A1")
' work through sheets
For J = 2 To Sheets.Count ' from sheet 2 to last sheet
Sheets(J).Activate ' make the sheet active
Range("A1").Select
Selection.CurrentRegion.Select ' select all cells in this sheets
' select all lines except title
Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select
' copy cells selected in the new sheet on last line
Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2)
Next
End Sub
Kopieren Sie einfach das Makro, fügen Sie es ein, führen Sie es aus und fertig!