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

Performance von Excel mit Makros

Performance von Excel mit Makros
28.01.2015 10:24:16
Excel
Hallo Leute,
ich wollte fragen, wieso excel so ungeheuer lange braucht beim Rechnen mit Makros. Meine Excel Datei hat zwar ca 600 000.
ich zeig euch mal mein Makro:

Sub matheHinzufuegen()
Dim h As Long
'Calculating Server Respond Time
For h = 2 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Sheet1").Cells(h, 15).Value = Worksheets("Sheet1").Cells(h, 8) - Worksheets("Sheet1" _
_
_
_
).Cells(h, 5).Value
Next h
'Calculating Passed Time from 1st to 2nd Checkpoint'
For h = 2 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Sheet1").Cells(h, 16).Value = Worksheets("Sheet1").Cells(h, 6) - Worksheets("Sheet1" _
_
_
_
).Cells(h, 5).Value
Next h
'Calculating Passed Time from 2nd to 3rd Checkpoint'
For h = 2 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Sheet1").Cells(h, 18).Value = Worksheets("Sheet1").Cells(h, 7) - Worksheets("Sheet1" _
_
_
_
).Cells(h, 6).Value
Next h
'Calculating Passed Time from 3rd to 4th Checkpoint'
For h = 2 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Sheet1").Cells(h, 20).Value = Worksheets("Sheet1").Cells(h, 8) - Worksheets("Sheet1" _
_
_
_
).Cells(h, 7).Value
Next h
'Calculating  Passed Time In Percent'
For h = 2 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Sheet1").Cells(h, 17).Value = Round((100 / Worksheets("Sheet1").Cells(h, 15)) *   _
Worksheets("Sheet1").Cells(h, 16).Value, 2)
Next h
'Calculating  Passed Time In Percent'
For h = 2 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Sheet1").Cells(h, 19).Value = Round((100 / Worksheets("Sheet1").Cells(h, 15)) *   _
Worksheets("Sheet1").Cells(h, 18).Value, 2)
Next h
'Calculating  Passed Time In Percent'
For h = 2 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Sheet1").Cells(h, 21).Value = Round((100 / Worksheets("Sheet1").Cells(h, 15)) *  _
Worksheets("Sheet1").Cells(h, 20).Value, 2)
Next h
'Using the right Format'
Range("O:O").Select
Selection.NumberFormat = "hh:mm:ss.000"
Range("P:P").Select
Selection.NumberFormat = "hh:mm:ss.000"
Range("R:R").Select
Selection.NumberFormat = "hh:mm:ss.000"
Range("T:T").Select
Selection.NumberFormat = "hh:mm:ss.000"
Range("Q:Q").Select
Selection.NumberFormat = "0.00%"
Range("S:S").Select
Selection.NumberFormat = "0.00%"
Range("U:U").Select
Selection.NumberFormat = "0.00%"
'Add Captions'
Worksheets("Sheet1").Cells(1, 15).Value = "Sever Respond Time"
Worksheets("Sheet1").Cells(1, 16).Value = "Time Passed from 1st to 2nd Checkpoint"
Worksheets("Sheet1").Cells(1, 17).Value = "1st Time Pass in Percent"
Worksheets("Sheet1").Cells(1, 18).Value = "Time Passed from 1st to 2nd Checkpoint"
Worksheets("Sheet1").Cells(1, 19).Value = "2nd Time Pass in Percent"
Worksheets("Sheet1").Cells(1, 20).Value = "Time Passed from 1st to 2nd Checkpoint"
Worksheets("Sheet1").Cells(1, 21).Value = "3rd Time Pass in Percent"
End Sub

Ich brauch dringend hilfe, es dauert wirklich sehr sehr lange.

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Performance von Excel mit Makros
28.01.2015 10:39:54
Excel
Hi
jeder Zellzugriff in Excel braucht eine gewisse Zeit.
das hängt damit zusammen, dass Excel bei jeder Änderung eines Zellwertes eine Reihe von Aktionen ausführen muss, wie beispielsweise:
- Wert der Zelle auf dem Bildschirm ändern
- Prüfen, ob es eine Geöffnete Exceldatei gibt, die eine Formel besitzt, die sich auf die grade geänderter Zelle bezieht und wenn ja, muss diese Zelle neu berechnet werden und in der folge geprüft werden, ob es in den geöffneten Exceldateien wiederum eine Zelle gibt, die sich auf die grade geänderte bezieht usw
deswegen sollte man, wenn man Geschwindigkeit haben will, die Anzahl der Zellzugriffe auf das notwendige Minimum reduzieren.
Hierzu kann man dann beispielsweise Formeln verwenden:
Ersetze:
For h = 2 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Sheet1").Cells(h, 15).Value = Worksheets("Sheet1").Cells(h, 8) - Worksheets("Sheet1" _
).Cells(h, 5).Value
Next h
durch
With Sheets("Sheet1")
With .Range(.Cells(2, 15), .Cells(.Rows.Count 1).end(xlup).offset(0, 14))
.Formula = "=RC8-RC5"
.Formula = .Value
End With
End With
das ist dann schneller, weil du hier nur noch zwei Zugriffe auf die Excelzellen hast.
Gruß Daniel

Anzeige
AW: Performance von Excel mit Makros
28.01.2015 10:53:15
Excel
Hey Daniel,
danke für dein Tipp.
Leider zeigt mir dein Quellcode nen compiler error an. Kannste mir dabei mal behilflich sein =

AW: Performance von Excel mit Makros
28.01.2015 10:59:23
Excel
Hab nun den Fehler gefunden, es fehlte ein Komma nach rows.count.
Aber beim Ausführen kommt immer 00.00.00 raus in jeder Zeile.
Weist du woran des liegt, des wäre echt hammer

AW: Performance von Excel mit Makros
28.01.2015 11:05:57
Excel
Hi
es kann an deinem Code oder an deinen Daten in der Tabelle liegen.
Ich kenne weder das eine noch das andere.
Gruß Daniel

AW: Performance von Excel mit Makros
28.01.2015 11:01:42
Excel
Hi
es wäre gut, wenn du mir deinen Quellcode zeigst.
ausserdem solltest du die Fehlerbeschreibung ein bisschen präzisieren (welcher Fehler, in welcher Zeile usw.)
Ich bin leider kein Hellseher und kann mich auch nicht auf deinen Rechner aufschalten um zu sehen was bei dir passiert.
Ausserdem erwarte ich von dir, dass du mein Codebeispiel nicht einfach nur kopierst, sondern dass du versuchst zu verstehen was ich meine und dann den Code selber schreibst.
Gruß Daniel

Anzeige
AW: Performance von Excel mit Makros
28.01.2015 11:11:00
Excel
Hey,
tut mir Leid für meine Unhöflichkeit.
Ich verstehe deinen Code und habe nun auch den Fehler entdeckt.
Es geht mir grad nur darum, wieso meine Rechnung nicht berechnet wird
With Sheets("Sheet1")
With .Range(.Cells(2, 15), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 14))
.Formula = "=RC8-RC5"
.Formula = .Value
End With
End With
Es gibt nur 00:00:00:00 zurück in jeder Zeile.
Es soll ja in jeder Zeile die werte von der spalte 8 von der spalte 5 abziehen und zwar die, die in der selben Zeile stehen.
Danke im Voraus
Gruß
Furkan

Anzeige
AW: Performance von Excel mit Makros
28.01.2015 11:17:50
Excel
Hi
ok, doch noch ein Fehler von mir.
schreibs mal so:
.FormulaR1C1 = "=RC8-RC5"
.Formula = .Value

Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige