Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1344to1348
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

Makro viel zu langsam

Makro viel zu langsam
20.01.2014 17:51:19
Dorfer
Hallo miteinander,
evtl, kann mir hier jemand weiterhelfen.
Ich habe ein Makro geschrieben, dass zwar korrekte ergebnisse liefert, aber unglaublich lange dafür braucht.
Wenn ich es komplett durchlaufen lasse > 15 min oder Excel macht nicht mehr mit...
hier der Code:
Sub Menge_pro_Ausstattung()
Dim a As String
Dim i, S, last_RT, last_Aus, Z As Integer
last_RT = Cells(2, Columns.Count).End(xlToLeft).Column
last_Aus = Sheets("Komplettdatei mit D.").Cells(9, Columns.Count).End(xlToLeft).Column
Range(Cells(24, 2), Cells(164, last_RT)).Select
Selection.Clear
For Z = 24 To 164
For S = 2 To last_RT
a = Cells(9, S)
For i = 2 To last_Aus
If Not IsEmpty(Sheets("Komplettdatei mit D.").Cells(Z, i)) Then
If Sheets("Komplettdatei mit D.").Cells(9, i).Text = a Then
Cells(Z, S).Value = Cells(Z, S).Value + Sheets("Komplettdatei mit D.").Cells(Z, i).Value
Else
End If
End If
Next i
Next S
Next Z
End Sub
Es wäre nett wenn sich das einer der Profis hier durchlesen könnte und ggf. einen Tipp hätte wie das schneller läuft.
Danke im Voraus
Florian

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro viel zu langsam
20.01.2014 18:06:23
Martin
Hallo Florian,
ich habe dein Makro auch inhaltich ein wenig verändert. Teste mal bitte:
Sub Menge_pro_Ausstattung()
Dim a As String
Dim i As Integer, S As Integer, last_RT As Integer, last_Aus As Integer, Z As Integer
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
With Sheets("Komplettdatei mit D.")
last_RT = .Cells(2, .Columns.Count).End(xlToLeft).Column
last_Aus = .Cells(9, .Columns.Count).End(xlToLeft).Column
.Range(.Cells(24, 2), .Cells(164, last_RT)).Clear
For Z = 24 To 164
For S = 2 To last_RT
a = .Cells(9, S)
For i = 2 To last_Aus
If Not IsEmpty(.Cells(Z, i)) Then
If .Cells(9, i).Text = a Then
.Cells(Z, S).Value = .Cells(Z, S).Value + .Cells(Z, i).Value
End If
End If
Next i
Next S
Next Z
End With
With Application
.Calculation = xlCalculationAutomatic
.ScreenUpdating = False
End With
End Sub
Ich hoffe, dass alles klappt!
Viele Grüße
Martin
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige