Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1132to1136
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

Daten aus Zelle oder Array - Geschwindigkeit

Daten aus Zelle oder Array - Geschwindigkeit
Armin
Hallo,
ich sitze gerade vor der Frage, um wieviel schneller es ist Daten zunächst in eine Array-Variable einzulesen und anschließend einen Wert mit dem Inhalt der Array-Variable zu vergleichen. Die andere Alternative wäre, den Wert im dem direkten Inhalt einer Zelle zu vergleichen.
Beispiel Array:
for i = 1 to 10000
array(i) = cells(i,1).value
next i
for i = 1 to 10000
if wert = array(i) then
treffer = treffer +1
end if
next i
Beispiel direkter Vergleich
for i = 1 to 10000
if wert = cells(i,1).value then
treffer = treffer +1
end if
next i
Welche Variante ist unter Geschwindigkeits-Gesichtspunkten zu bevorzugen?
Vielen Dank für euere Tipps
Armin

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Daten aus Zelle oder Array - Geschwindigkeit
03.02.2010 18:09:50
Josef
Hallo Armin,

es kommt natürlich immer auf den jeweiligen Einsatz an,
aber den Zeitunterschied kannst du ja leicht testen.

Sub test1()
  Dim vntArray As Variant
  Dim lngIndex As Long, lngC As Long
  Dim t As Double
  
  t = Timer
  
  vntArray = Range("A1:A65000")
  
  For lngIndex = 1 To 25000
    If vntArray(lngIndex, 1) = 1 Then lngC = lngC + 1
  Next
  
  MsgBox Timer - t
End Sub

Sub test2()
  Dim rng As Range
  Dim lngC As Long
  Dim t As Double
  
  t = Timer
  
  For Each rng In Range("A1:A65000")
    If rng = 1 Then lngC = lngC + 1
  Next
  
  MsgBox Timer - t
End Sub

Gruß Sepp

Anzeige
to 65000 im ersten Code! o.T.
03.02.2010 18:12:48
Josef
Gruß Sepp

AW: Daten aus Zelle oder Array - Geschwindigkeit
03.02.2010 20:41:19
Daniel
Hi
wenn ich verschiedene Varianten auf Geschwindigkeit testen will, verwende ich immer folgenden Testaufbau:
dabei habe ich ein Testmakro, daß die einzelnen Makros nacheinander aufruft und die Laufzeit im Direktfenster darstellt.
Außerdem habe ich für dein Problem noch 2 andere Lösungsvarianten hinzugefügt, die vom Speed her für dich auch interessant sein könnten:
Option Explicit
Sub TestMakro()
Dim T As Double
Dim i As Long
For i = 1 To 4 'an die anzahl der Makros anpassen
T = Timer
Application.Run "Makro" & i
T = Timer - T
Debug.Print "Makro" & i & ":", T
Next
End Sub
Sub makro1()
Dim Treffer As Long
Dim wert As Long
Dim i As Long
Dim arr(1 To 10000)
wert = 10
For i = 1 To 10000
arr(i) = Cells(i, 1).Value
Next i
For i = 1 To 10000
If wert = arr(i) Then
Treffer = Treffer + 1
End If
Next i
End Sub
Sub makro2()
Dim i As Long
Dim wert As Long
Dim Treffer As Long
wert = 10
For i = 1 To 10000
If wert = Cells(i, 1).Value Then
Treffer = Treffer + 1
End If
Next i
End Sub
Sub makro3()
Dim arr
Dim Treffer As Long
Dim i As Long
Dim wert As Long
wert = 10
arr = Range("A1:A10000").Value2
For i = 1 To 10000
If arr(i, 1) = wert Then
Treffer = Treffer + 1
End If
Next
End Sub
Sub Makro4()
Dim wert As Long
Dim Treffer As Long
wert = 10
Treffer = WorksheetFunction.CountIf(Range("A1:A10000"), wert)
End Sub

Gruß, Daniel
Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige