Anzeige
Archiv - Navigation
1320to1324
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
Inhaltsverzeichnis

Codeoptimierung! Laufzeit zu lange :-)

Codeoptimierung! Laufzeit zu lange :-)
27.06.2013 12:19:48
Thomas
Hallo zusammen,
langsam werd ich zum täglichen Gast im Forum :-)
Ich habe folgende Aufgabe:
Es existiert eine Datei(ca.70.000 bis 200.000) mit datumsabhängigen Vorgängen aus dem Jahr 2012 und 2013.
Hierbei muss ich händisch folgende Operationen ausführen:
1. Alle Daten aus dem Jahr 2012 löschen
2. In einer bestimmten Spalte alle Values mit dem Wert -1 multiplizieren
3. Alle Vorgänge einem Namen zu ordnen
4. Pivottabellen erstellen

Derzeit setzte ich Punkt 1 und 2 um und habe auch einen relativ brauchbaren Code geschrieben für kleine Datenmengen. Da die Datei von Monat zu Monat größer wird und immer mehr Zeilen hat, dauert es sehr lange (teilweise muss ich abbrechen) bis die Anweisungen ausgeführt werden.
Kann mir jemand helfen den Code umzusetzen?

Sub loeschen()
Dim lzeile As Long
Dim i As Long
Application.ScreenUpdating = False
'Bestimmung der letzten Zeile"
lzeile = Sheets("Daten_45").Cells(Sheets("Daten_45").Rows.Count, 3).End(xlUp).Row
Debug.Print (lzeile) ' Anzeige im Direktbereich
'Für jede Zeile soll geprüft werden, ob 2012 oder 2013. Wenn aus dem Jahr 2012 dann löschen
For i = lzeile To 6 Step -1
If Sheets("Daten_45").Cells(i, 6).Value 

Sub Zeil()
Dim Zeilenanzahl As Long
Dim Zeile As Long
Const Faktor = -1
Application.ScreenUpdating = False
'Bestimmung der letzten Zeile"
Zeilenanzahl = Sheets("Daten_45").Cells(Sheets("Daten_45").Rows.Count, 3).End(xlUp).Row
'Jede Zeile soll um den Fakor -1 erweitert werden
For Zeile = Zeilenanzahl To 1 Step -1
With Sheets("Daten_45")
If VarType(Cells(Zeile, 5)) = 5 Then
.Cells(Zeile, 5).Value = .Cells(Zeile, 5).Value * Faktor
End If
End With
Next Zeile
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Codeoptimierung! Laufzeit zu lange :-)
27.06.2013 12:41:49
Luschi
Hallo Thomas,
bei solchen umfangreichen Änderungen sollte man alle Excel-Bremsen lösen, d.h. die folgenden Aktionen abschalten:
- automatische Berechnung
- Bildschirmaktualisierung
- Ereignis-Rouninen
Siehe dazu mal unter dem Stichwort 'GetMoreSpeed' hier in diesem Forum oder bei Tange Google.
Gruß von Luschi
aus klein-Paris
PS: Und nicht vergessen, am Schluß wieder alles akativieren.

AW: Codeoptimierung! Laufzeit zu lange :-)
27.06.2013 12:49:28
Rudi
Hallo,
Sub loeschen()
Dim lzeile As Long
Dim i As Long, rDel As Object
Application.ScreenUpdating = False
'Bestimmung der letzten Zeile"
lzeile = Sheets("Daten_45").Cells(Sheets("Daten_45").Rows.Count, 6).End(xlUp).Row
Debug.Print (lzeile) ' Anzeige im Direktbereich
'Für jede Zeile soll geprüft werden, ob 2012 oder 2013. Wenn aus dem Jahr 2012 dann löschen
For i = lzeile To 6 Step -1
If Sheets("Daten_45").Cells(i, 6).Value 

Gruß
Rudi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige