Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Spalten untereinander kopieren mit sehr großen Dat

Spalten untereinander kopieren mit sehr großen Dat
26.02.2018 16:07:13
Thomas
Hallo liebes Forum,
ich habe das Problem das ich 33 Spaltenblöcke 'a sechs Spalten untereinander kopieren möchte. Innerhalb der einzelnen Spaltenblöcke gibt es, bezogen auf den Spaltenblock, in unregelmäßigen abständen, Leerzeilen. In dem nächsten Spaltenblock können die Zeilen jedoch gefüllt sein.
Aktuell umfasst die Tabelle mehr als 45.000 Zeilen, mit Tendenz nach oben.
Hier im Forum habe ich folgendes gefunden:
https://www.herber.de/forum/archiv/1508to1512/1510634_Spalten_untereinander_kopieren.html
Dieses hat mir schon geholfen, jedoch habe ich zwei Probleme:
1. Die Laufzeit des Makros, ich habe meine Tabelle auf ca.2100 Zeilen "gekürzt". Hierbei beträgt die Laufzeit ca. 1 - 1,5 Stunden. Als Ergebis kamen ca. 70.000 Zeilen heraus, die sich nach Sortierung (Leerzeilen raus) auf 10.500 Zeilen reduziert haben.
Der Anteil an Leerzeilen Innerhalb des Spaltenblockes ist größer 60%
Bei der kompletten Tabelle habe ich nach 17 Stunden hart abgebrochen.(Laptop Intel I7-6600U, 8GB Ram)
2. Die Anzahl der Zeilen in Summe. Aktuell ca. 45.000 Zeilen x 33 Blöcke = 1.485.000 Zeilen = Excel-Problem mit der max. Zeilenanzahl in einem Tabellenblatt.
Jetzt, Liebes Forum zu meiner Frage:
Kann man das zitierte Makro bezüglich Laufzeit modifizieren, und beim kopieren die Leerzeilen löschen?
Eine weitere Idee von mir ist es, die 33 Blöcke auf jeweils ein eigenes Tabellenblatt zu kopieren. Hier zu sortieren (Leerzeilen raus) und die Tabellenblätter wieder zusammenkopieren. Aber auch hierzu habe ich keine Lösung gefunden.
Da meine VBA Kenntnisse bescheiden sind hoffe ich das mir das Forum helfen kann.
Vielen Dank
Gruß
Thomas

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten untereinander kopieren mit sehr großen Dat
26.02.2018 19:23:32
Rudi
Hallo,
Die zeilenweise Kopiererei frisst die Zeit.
ca 10 Sek 3000Z x 198S:
Sub Kopieren()
Dim wksQ As Worksheet, wksZ As Worksheet
Dim lCol As Long
Dim lRow As Long, lRows As Long
Application.ScreenUpdating = False
Set wksQ = Worksheets("Quelle")
Set wksZ = Worksheets("Ziel")
wksZ.Cells.Clear
With wksQ.UsedRange
lRow = .Row
lRows = .Rows.Count
For lCol = 1 To 33
.Cells(lRow, lCol * 6 - 5).Resize(lRows, 6).Copy _
wksZ.Cells(Rows.Count, 1).End(xlUp).Offset(1)
wksZ.Columns(1).Resize(, 6).Sort _
key1:=wksZ.Cells(2, 1), order1:=xlAscending, Header:=xlGuess
Next lCol
End With
End Sub

Gruß
Rudi
Anzeige
AW: Spalten untereinander kopieren mit sehr großen Dat
27.02.2018 09:27:36
Thomas
Hallo Rudi, Hallo Günther, Hallo Forum,
Die Lösung von Rudi die ist fast perfekt. Leider verstehe ich mit meinen rudimentären VBA Kenntnissen den Fehler (noch) nicht.
Das Makro hat eine Super Laufzeit, meine Testdatei mit den ca.2100 Zeilen benötigt gefühlt 1 sec. und läuft sauber durch.
Die Komplette Datei mit den ca. 45.000 Zeilen bricht nach ca. 1 min. mit einem Laufzeitfehler ab.
Laufzeitfehler 1004 :
Sie können dieses hier nicht einfügen, da der Kopieren-Bereich und der Einfügebereich nicht die gleiche Größe haben.
Wählen Sie im Einfügebereich nur eine Zelle oder einen Bereich mit derselben Größe aus, und versuchen Sie das Einfügen noch mal.
Bis dahin hat das Makro, so wie ich das Interpretiere, 24 von 33 Blöcken verarbeitet.
Es wurden die Zeilen 1 - 165.641 gefüllt, dann kommen sehr viele Leerzeilen und ab Zeile 1.006.071 - 1.025.160 sind wieder die Zeilen gefüllt (Die Letzten 24 Zeilen sind die Überschriften).
Wodran kann das Liegen?
Den Vorschlag von Günther werde ich mir auch noch mal etwas genauer ansehen, dieses könnte ich für andere dinge gebrauchen. In diesem Fall bevorzuge ich jedoch die Makro-Lösung, da ich im Vorfeld schon ein Makro laufen habe.
Danke und Gruß
Thomas
Anzeige
AW: Spalten untereinander kopieren mit sehr großen Dat
27.02.2018 12:54:15
Thomas
Hallo Rudi, Hallo Forum,
Problem ist gelöst, meine Leerzeilen (Zellen) waren nicht Leer (Istleer = falsch).
Ich habe im Vorfeld mittels Formeln die Daten erzeugt und mit der wenn-Funktion Leerzellen erzeugt (wenn(x=1;1;""). Anschließend habe ich die Daten kopiert und über Werte einfügen die Formeln eliminiert. Jedoch sagt Excel aufgrund des "" in der wenn-Funktion das die Zelle nicht leer ist.
Mit Hilfe des Forums konnte ich "echte" Leerzellen erzeugen und jetzt läuft das Makro von Rudi sauber durch.
https://www.herber.de/forum/archiv/1256to1260/1259509_Zelle_ist_leer_wird_aber_als_nichtleer_gezaehlt.html
Vielen Dank für die Hilfe
Gruß
Thomas
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige