AW: drei Spalten in einer zusammen führen
16.04.2007 23:58:26
Daniel
Hallo
ich hab mal ein kleines Makro geschrieben, daß die Zeit misst, die Excel in verschieden Varianten benötigt, um eine vorgegebene Anzahl von 3er-Additionen durchzuführen:
1. normale Schleife mit Zellwerten
2. wie 1, aber Bildschirm aus
3. Formellösung ohne Schleifen
4. addition in Schleifen, aber mit internen Array-Variablen, die zurückgeschrieben werden.
das Ergebnis sehe jeder selbst, ich denke mal 10.000 ist ein guter Startwert
Sub Speedtest()
Dim Anz As Long
Dim Zeit(3) As Double
Dim Start As Double
Dim i As Long
Dim j As Long
Dim Ergebnis As String
Dim Werte
Dim Summe
Cells.Clear
Anz = InputBox("Anzahl von Additionen (1-65536)")
Cells(1, 1).Resize(Anz, 3).Value = 1
'--- Schleife mit Range-Objekten ----------------------------------
Application.StatusBar = "Test 1 - Schleife mit Range-Objekten"
Columns(4).Clear
Start = Timer
For i = 1 To Anz
For j = 1 To 3
Cells(i, 4).Value = Cells(i, 4).Value + Cells(i, j)
Next
Next
Zeit(0) = Timer - Start
'--- Schleife mit Range-Objekten Bildschirm aus-----------------
Application.StatusBar = "Test 2 - Schleife mit Range-Objekten und Bildschirm aus"
Columns(4).Clear
Application.ScreenUpdating = False
Start = Timer
For i = 1 To Anz
For j = 1 To 3
Cells(i, 4).Value = Cells(i, 4).Value + Cells(i, j)
Next
Next
Zeit(1) = Timer - Start
Application.ScreenUpdating = True
'--- Formel-Lösung ------------------------------------------------
Application.StatusBar = "Test 4 - Formel-Lösung"
Columns(4).Clear
Start = Timer
Cells(1, 4).Resize(Anz, 1).FormulaLocal = "=A1+b1+c1"
Cells(1, 4).Resize(Anz, 1).Formula = Cells(1, 4).Resize(Anz, 1).Value
Zeit(2) = Timer - Start
'--- Schleife mit Array-Variablen ------------------------------
Application.StatusBar = "Test 4 - Schleife mit Array-Variablen"
Columns(4).Clear
Start = Timer
Werte = Cells(1, 1).Resize(Anz, 3).Value
Summe = Cells(1, 4).Resize(Anz, 1).Value
For i = 1 To Anz
For j = 1 To 3
Summe(i, 1) = Summe(i, 1) + Werte(i, j)
Next
Next
Cells(1, 4).Resize(Anz, 1).Value = Summe
Zeit(3) = Timer - Start
Ergebnis = Ergebnis & Format(Zeit(0), "0.0000") & " - Schleife mit Zellwerten"
Ergebnis = Ergebnis & Chr(10)
Ergebnis = Ergebnis & Format(Zeit(1), "0.0000") & " - Schleife mit Zellwerten Bildschirm aus"
Ergebnis = Ergebnis & Chr(10)
Ergebnis = Ergebnis & Format(Zeit(2), "0.0000") & " - Formellösung in VBA"
Ergebnis = Ergebnis & Chr(10)
Ergebnis = Ergebnis & Format(Zeit(3), "0.0000") & " - Schleife mit Array-Variablen"
Application.StatusBar = "Testende"
MsgBox Ergebnis, , "Ergebnis"
Application.StatusBar = False
End Sub
Gruß, Daniel