Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
944to948
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
944to948
944to948
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Beschleunigung eines Makro

Beschleunigung eines Makro
23.01.2008 08:20:40
Jörg
Hallo zusammen,
bräuchte eure Hilfe.
Folgendes Makro durchläuft ~ 12000 Zeilen für 2 * 256 Spalten
Wie kann ich das Makro beschleunigen (außer mit Application.ScreenUpdating)?
Sub Tabelle1()
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
Sheets("Tabelle1").Select
Cells(1, 1).Select
Dim i As Integer
i = 5
j = 4
Do
If (Selection Selection.Offset(0, i) Or Selection.Offset(0, 1) Selection.Offset(0, j)) Then
Selection.Offset(0, i - 2).Insert Shift:=xlDown
Selection.Offset(0, i - 1).Insert Shift:=xlDown
Selection.Offset(0, i).Insert Shift:=xlDown
Selection.Offset(0, i + 1).Insert Shift:=xlDown
Selection.Offset(0, i + 2).Insert Shift:=xlDown
End If
Selection.Offset(1, 0).Select
Loop Until Selection = "" Or Selection.Offset(0, i) = ""
i = i + 6
j = j + 6
Cells(1, 1).Select
An dieser Stelle folgt dieselbe Anweisung ab Do erneut. Dieser Schritt wiederholt sich 84 mal.
Wie könnte ich den Ablauf beschleunigen?
Ziel ist ja, dass Excel mir zu einem Wertepaar in Spalte A/B die sortierten Werte aus Spalte F/E auf der jeweiligen Zeilenhöhe einfügt.
Bin hier echt am verzweifeln, da das verschieben um ca 1.000 Zeilen aus dem ersten der 84 Blöcke schon 5 min dauert.
Bitte um ne möglichst schnelle Antwort.
Gruß

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Beschleunigung eines Makro
23.01.2008 08:59:00
Wolli
Moin Jörg,
Ganz schnell und kurz: Kannst Du nicht die Daten an die passende Stelle in ein neues Blatt kopieren? Das, was lange dauert, ist mit Sicherheit das tausendfache Schieben. Und verzichte auf Select, sprich die Zellen mit Range(cells(x,1),cells(x,5)) oder so ähnlich direkt an.
Ich lasse es noch offen, damit dir vielleicht eine Komplettlösung zuteil wird.
Gruß, Wolli

AW: Beschleunigung eines Makro
23.01.2008 09:30:39
Rudi
Hallo,
leider kann ich mir gar nicht vorstellen, was du willst.
Beispieltabelle?
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Beschleunigung eines Makro
23.01.2008 10:09:12
Wolli
Hallo Jörg, ich habe jetzt Dein Problem nachvollzogen und könnte Dir eine Lösung schreiben. Noch Interesse? Gruß, Wolli

Anzeige
AW: Beschleunigung eines Makro
23.01.2008 10:37:00
Jörg
Klar ist noch Interesse. Ich nehme gerne jede Lösung an.
Von Hand schieben geht leider nicht (händisch zu bearbeiten ~ 12000 * 512 Zellen)

AW: Beschleunigung eines Makro
23.01.2008 12:29:40
Wolli
Hallo Jörg, teste das mal:

Sub Schiebung()
Dim lngSpalte As Long, _
lngZeile As Long
For lngSpalte = 4 To 250 Step 6
lngZeile = 1
Do
If Cells(lngZeile, 1)  Cells(lngZeile, lngSpalte + 2) Or _
Cells(lngZeile, 2)  Cells(lngZeile, lngSpalte + 1) Then
Range(Cells(lngZeile, lngSpalte), Cells(lngZeile, _
lngSpalte + 4).End(xlDown)).Cut _
(Cells(lngZeile + 1, lngSpalte))
End If
lngZeile = lngZeile + 1
Loop Until Cells(lngZeile, 1) = "" Or Cells(lngZeile, lngSpalte) = ""
Next lngSpalte
End Sub


Ich habe es mangels Daten ÜBERHAUPT nicht selbst getestet, also Obacht! Deine Blöcke sind 5 Spalten breit, dazwischen scheint jeweils eine Leerspalte zu sein, so dass Du von einem Block zum nächsten 6 Spalten nach rechts wandern musst. Das gibt aber nur 42 Blöcke bis zur letzten Spalte, nicht 84!
Berichte mal, ob's geht!
Gruß, Wolli

Anzeige
AW: Beschleunigung eines Makro
23.01.2008 12:40:59
Jörg
Funktioniert hervorragend. Dankeschön
Das mit den 84 Blöcken stimmt schon, da dann ein Umsprung auf ein anderes Tabellenblatt kommt.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige