AW: Wie man es sieht ....
14.03.2010 17:03:56
Gerd
Hallo,
ein realistischeres Beispiel Application.Match und Worksheetfunction.Match am Range-Objekt,
Auslesen in das Datenfeld aus der Tabelle für die "lineare Methode" u. jeweils nur eine Suche.
Zunächst stelle ich fest, dass Application.Match u. Worksheetfunction.Match unterschiedliche Geschwindigkeiten haben, also verschiedene Funktionen sein müssen.
Und im Datenfeld ist die Laufzeit so gering, dass ich beim Timer noch etwas dazuschreiben musste, damit überhaupt ein Wert größer (absolut) Null herauskommt. :-)
Die Ergebnisse auf meinem PC:
T1 0,421875
T2 0,359375
T3 0,000000000001
Public Sub test2()
Dim L As Long
Dim I As Long
Dim tmp
Dim T1 As Double, T2 As Double, T3 As Double
Dim arr()
For L = 1 To 10000
Cells(L, 1) = L
Next
'Mit Application.Match()
T1 = Timer
For L = 1 To 10000
tmp = Application.Match(9000, Range("A1:A10000"), 1)
Next
T1 = Timer - T1
'Mit Worksheetfuncion.Match()
T2 = Timer
For L = 1 To 10000
tmp = WorksheetFunction.Match(9000, Range("A1:A10000"), 1)
Next
T2 = Timer - T2
'Array einzeln absuchen
T3 = Timer
arr = Application.Transpose(Range("A1:A10000"))
For L = 1 To 10000
If arr(L) = 9000 Then Exit For
Next
T3 = Timer - T3 + 1 / 1000000000000
Debug.Print T1
Debug.Print T2
Debug.Print T3
End Sub
Gruß Gerd