Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Maximalwert aus Array auslesen

Betrifft: Maximalwert aus Array auslesen von: Armin
Geschrieben am: 07.10.2020 10:09:34

Hallo zusammen,

ich habe folgende Fragestellung.
In ein Array übergebe ich per VBA beispielsweise folgende Daten:

arrTest(1,1) = 5
arrTest(1,2) = "A"
arrTest(2,1) = 10
arrTest(2,2) = "B"
arrTest(3,1) = 8
arrTest3,2) = "C"

Die Daten sehen dementsprechend so aus:
5,A
10,B
8,C

Ich müsste nun den größten Wert aus der ersten Dimension, also im Beispiel den Wert 10 ermitteln und dementsprechend aus Dimension 2 des Arrays den Wert B auslesen.

Den Max-Wert ermittle ich derzeit wie folgt:
lngMax = Application.Max(arrTest)

Das funktioniert auch soweit und ich bekomme den Wert 10.
Die Frage wäre nun, wie ich den zugehörigen Wert B ermitteln kann.

Vielen Dank schon mal für eure Mühe.

LG Armin

Betrifft: AW: Maximalwert aus Array auslesen
von: UweD
Geschrieben am: 07.10.2020 10:40:26

Hallo


kannst du die Daten auch so erfassen?
    Dim arrTestZ(1 To 3), arrTestB(1 To 3), lngMax As Long
    
    arrTestZ(1) = 5
    arrTestB(1) = "A"
    arrTestZ(2) = 10
    arrTestB(2) = "B"
    arrTestZ(3) = 8
    arrTestB(3) = "C"
    
'    Die Daten sehen dementsprechend so aus:
'    5,A
'    10,B
'    8,C
'
    
    lngMax = Application.Max(arrTestZ)
    lngMax = Application.Match(lngMax, arrTestZ, 0)
    
    MsgBox arrTestZ(lngMax) & ", " & arrTestB(lngMax)

LG UweD

Betrifft: AW: Maximalwert aus Array auslesen
von: Armin
Geschrieben am: 07.10.2020 10:53:06

Super Danke dir,

funktioniert bestens.

LG Armin

Betrifft: AW: Maximalwert aus Array auslesen
von: Gerd L
Geschrieben am: 07.10.2020 13:18:29

Moin Armin!
Sub Unit()

    Dim arrTest(1 To 3, 1 To 2)
    Dim M, N, O
    
    arrTest(1, 1) = 5
    arrTest(1, 2) = "A"
    arrTest(2, 1) = 10
    arrTest(2, 2) = "B"
    arrTest(3, 1) = 8
    arrTest(3, 2) = "C"
    
    'Höchster Wert
    M = Application.Max(WorksheetFunction.Index(arrTest, 0, 1))
    MsgBox M
    
    'Platzierung des höchsten Wertes
    N = Application.Match(M, WorksheetFunction.Index(arrTest, 0, 1))
    
    'paraleller Buchstabe
    O = arrTest(N, 2)
    MsgBox O

End Sub

Gruß Gerd