AW: VBA: der zehnt schlechteste Wert
01.02.2007 12:33:32
Heiko
Hallo Jens,
hier mal mein Beispiel, das die von IngUR in Spiel gebrachte Funktion Small nutzt.
Wenn du damit Leben kannst das es nicht genau 4 Mio Durchläufe sind sondern immer nur ein vielfaches von 65536 ( also z.B. 3997696) dann solltest du dir das mal anschauen.
Sub TestT()
Dim arrdblDaten() As Double
Dim lngI As Long, lngMax As Long
Dim bytSpalten As Byte
' Die * 10 gibt an das 65356 * 10 Zufallzahlen erzeugt werden.
' WICHTIG immer nur den Wert 10 verändern (zwischen 1 und 255) sonst
' kann die Funktion Small nicht richtig arbeiten, da dann das Array zuviele
' Nullen enthält !!!
lngMax = 65536 * 10
bytSpalten = lngMax \ 65535
ReDim arrdblDaten(65535, bytSpalten - 1)
bytSpalten = 0
For lngI = 0 To lngMax - 2
Randomize
If (lngI + 1) Mod 65536 = 0 Then
bytSpalten = bytSpalten + 1
End If
arrdblDaten(lngI - (bytSpalten * 65536) + 1, bytSpalten) = 1000000 * Rnd
Next lngI
' Da die erste Zelle im Array mit 0 gefüllt ist suche ich nach der 11 kleinsten Zahl,
' was dann die 10. kleinste ist.
MsgBox WorksheetFunction.Small(arrdblDaten, 11)
End Sub
Gruß Heiko
PS: Rückmeldung wäre nett !