14. maj 2019 - 19:11
Der er
5 kommentarer og
1 løsning
VBA finde 3 højste værdier i matrix
Jeg har lidt problem med følgende:
jeg har 4 kolonner og 25 rækker med tal B1 E25
en kolonne med tekst A1:A25
Jeg vil gerne finde de 3 højeste værdier i området B1:E25 og i hvilken celle værdien er, så jeg kan hente teksten i kolonne A1:A25
resultatet ønsker jeg således:
1. jan 100
2. per 99
osv
Hvordan pokker løser jeg det problem?
På forhånd tak
/fajens
Hej Mads32
Herunder er der en løsning, kan muligvis forfines lidt.
Naceoeb er lidt kringlet men umiddelbart ser den ud til at virke som ønsket.
Resultatet bliver vist i en message box
i arket "INDTAST SCORE" er der føgende kolonner:
A6:A145 fortløbende startnumre
B6:B145 Navne
C6:C145 klubnavne
D6:D145 klubnumre
E6:E145 grupper
F6:F145 Handicap
G6:I145 indtastede score i 3 kolonner, tal mellem 100 og 300 med dubletter.
Sub find_hoejst_score()
' Genvejstast:Ctrl+h
' Macro der finder den laveste totale score i valgt område.
' start og slut er rækkenumre ikke startnumre
Dim hs(5, 4)
Dim plc(5, 2)
Worksheets("INDTAST SCORE").Activate
d = 6
c = 145
For b = 1 To 5
For a = c To d Step -1
If Sheets("INDTAST SCORE").Cells(a, 7) = "" Then GoTo nxt1
For aa = 7 To 9
If Val(Cells(a, aa)) + Cells(a, 6) >= hs(b, 3) Then
If plc(b - 1, 1) = a And plc(b - 1, 2) = aa Then GoTo nxt2
If b = 1 Then GoTo nxt3
If plc(b - 2, 1) = a And plc(b - 2, 2) = aa Then GoTo nxt2
If b = 2 Then GoTo nxt3
If plc(b - 3, 1) = a And plc(b - 3, 2) = aa Then GoTo nxt2
If b = 3 Then GoTo nxt3
If plc(b - 4, 1) = a And plc(b - 4, 2) = aa Then GoTo nxt2
nxt3: plc(b, 1) = a
plc(b, 2) = aa
hs(b, 1) = Cells(a, 1)
hs(b, 2) = Cells(a, 2)
hs(b, 3) = Cells(a, aa) + Cells(a, 6)
hs(b, 4) = Cells(a, 6)
nxt2:
End If
Next aa
nxt1:
Next a
Next b
MsgBox hs(1, 1) & " " & hs(1, 2) & " " & hs(1, 3) & " " & hs(1, 4) & Chr(13) & _
hs(2, 1) & " " & hs(2, 2) & " " & hs(2, 3) & " " & hs(2, 4) & Chr(13) & _
hs(3, 1) & " " & hs(3, 2) & " " & hs(3, 3) & " " & hs(3, 4) & Chr(13) & _
hs(4, 1) & " " & hs(4, 2) & " " & hs(4, 3) & " " & hs(4, 4) & Chr(13) & _
hs(5, 1) & " " & hs(5, 2) & " " & hs(5, 3) & " " & hs(5, 4)
End Sub