ich hätte gerne noch gewusst, wie ich den Index des grössten Wertes in einem int-Array bestimmen kann.
Beispiel:
Array(1) = 2
Array(2) = 5
Array(3) = 1
-> Es sollte "2" zurückgegeben werden!
Danke schonmal!
Euer Karsten
ich hätte gerne noch gewusst, wie ich den Index des grössten Wertes in einem int-Array bestimmen kann.
Beispiel:
Array(1) = 2
Array(2) = 5
Array(3) = 1
-> Es sollte "2" zurückgegeben werden!
Danke schonmal!
Euer Karsten
in Schleife durchgehen.
Gruß
Micha
das müßte auch in Excel 97 mit WorksheetFunction funktionieren.
Konnte das nur in Excel 2000 testen:Dim intArray(1 To 3) As Integer
Code eingefügt mit Syntaxhighlighter 1.13
intArray(1) = 2
intArray(2) = 5
intArray(3) = 1
With Application.WorksheetFunction
MsgBox .Match(.Max(intArray), intArray)
End With
beim Ausprobieren der Grenze habe ich festgestellt, daß im geposteten Code bei der .MATCH-Funktion noch der dritte Parameter fehlt. Hier muß noch eine 0 übergeben werden:
MsgBox .Match(.Max(intArray), intArray, 0)
Gruß
Gerd
ne du die Zeilenanzahl bei Excel 97 betrug auch schon 65536. 16384 ist die Grenze von Excel 95.
Bei mir geht Match auch nur bis 5461 (ich glaube die Grenze von Excel4.0), wobei es aber auch daran liegen kann, dass ich was mit dem Array falsch mache. Damit habe ich noch nicht viel gearbeitet:
Sub matcharray()
Dim i As Double
Dim intArr() As Integer
For i = 1 To 65536
ReDim Preserve intArr(1 To i)
intArr(i) = i
With Application.WorksheetFunction
On Error GoTo ende
Cells(i, 2) = .Match(.Max(intArr), intArr, 0)
End With
Next i
ende:
End Sub
Eigentümlich ist, dass Match bei direktem Zugriff auf 65536 gefüllte Zellen anstandslos das richtige Ergebnis liefert.
Gruß
FCH