12. maj 2009 - 14:44 Der er 11 kommentarer og
2 løsninger

Find højeste tal med VBA i excel

Jeg har 4 celler i et excel-ark, indeholdende 1 tal hver. Jeg skal nu finde en simpel måde hvorpå jeg kan tjekke hvilket nr der er det højeste. Jeg har aldrig prøvet at lave Array, men ved at læse lidt på nettet, kan jeg se at det nok er sådan det skal gøres.

På forhånd tak for hjælpen.
  Jacob Møller Pedersen
12. maj 2009 - 14:49 #1
Skal du have vist den højeste værdi eller cellen tallet står i?
12. maj 2009 - 14:51 #2
Det er et pointsystem, hvor jeg til sidst i forløbet vil have vist hvem der har flest point. Så jeg vil egentlig gerne have vist en msgbox, med navnet ud for den kolonne, samt antal point. Fx: "Vinneren er Jacob med 145 point"
Avatar billede jonasboege Praktikant
13. maj 2009 - 13:40 #3
En lille hjemmestrikket løsning...
Jeg har ikke den store korrekte progammeringsviden - så der kommer nok en med en mere korrekt løsning - men denne var da sjov at lave :-)

Sub Vinder()
Dim maksindex As Integer, talrække As Integer, navnrække As Integer, kolonne As Integer, antal As Integer, i As integer

'hvilken række står tallene i?
talrække = 3
'hvilken række står navnet i?
navnrække = 2
'hvilken kolonne står første navn i?
kolonne = 6
'hvor mange navne?
antal = 4

ReDim navn(antal - 1) As String
ReDim point(antal - 1) As String

maksindex = maksindex
For i = 1 To antal
navn(i - 1) = Cells(navnrække, kolonne - 1 + i).Value
point(i - 1) = Cells(talrække, kolonne - 1 + i).Value

If i <> 1 Then If point(i - 1) > point(i - 2) Then maksindex = i - 1

Next

MsgBox "Vinderen er " & navn(maksindex) & " med " & point(maksindex) & " point."
End Sub
Avatar billede jonasboege Praktikant
13. maj 2009 - 13:57 #4
Hov - der er lige en rettelse i 4. sidste linie:

If i <> 1 Then If point(i - 1) > point(i - 2) Then maksindex = i - 1
skal i stedet være

If i <> 1 Then If point(i - 1) > point(maksindex) Then maksindex = i - 1
Avatar billede excelent Ekspert
13. maj 2009 - 15:24 #5
Under forudsætning at Navne er i A1:A4 og point i B1:B4
Ellers ret ranges i koden

Sub tst()
Point = Application.WorksheetFunction.Max(Range("B1:B4"))
navn = Range("B1:B4").Find(Point, LookIn:=xlValues).Offset(0, -1)
MsgBox "Vinder er " & navn & " med " & Point & " Point"
End Sub
Avatar billede jonasboege Praktikant
13. maj 2009 - 16:25 #6
Der kom så en, der lavede det lidt smartere :-)
Det læser spørgsmålet som om, at navnene står på række - altså Navne A1:D1
Point A2:D2

Sub tst()
Point = Application.WorksheetFunction.Max(Range("A2:D2"))
navn = Range("A2:D2").Find(Point, LookIn:=xlValues).Offset(-1, 0)
MsgBox "Vinder er " & navn & " med " & Point & " Point"
End Sub

Hvor kan man bare lære nogle ting herinde :D
15. maj 2009 - 08:16 #7
Problemet er lidt at point står på en række, hvor der samtidig også står en sidste spil. Dvs at det er kun hver 3. celle i række 28, der skal tjekkes på. Alts står point i cellerne
E28 H28 K28 N28 Q28, mens navnene står i cellerne
C1  F1  I1  L1  O1.
Dvs at der skal testes på cellerne *28 og så skal navnet i cellen, der passer til, så hentes også.
Avatar billede jonasboege Praktikant
15. maj 2009 - 09:10 #8
Hej.

Dette virker, hvis der ikke er andre tal i række 28, der er lig med maks...

Sub tst()
Point = Application.WorksheetFunction.Max(Range("E28"), Range("H28"), Range("K28"), Range("N28"), Range("Q28"))
navn = Range("E28:Q28").Find(Point, LookIn:=xlValues).Offset(-27, -2)
MsgBox "Vinder er " & navn & " med " & Point & " Point"
End Sub

Husk jeg stjæler fra excellent, så ingen point til mig - hvis det virker :-)
15. maj 2009 - 10:47 #9
Det virker sku lige som det skal :) En eller anden, bliver nok nødt til at smide et svar, hvis der skal uddeles nogle point. :) Tak for hjælpen.
Avatar billede excelent Ekspert
15. maj 2009 - 20:14 #10
Jeg syntes det ligner en deler :-)
15. maj 2009 - 20:31 #11
Det vil jeg gerne give dig ret i. Giver lige Jonas 24 timer til at smide et svar også :)
Avatar billede jonasboege Praktikant
16. maj 2009 - 09:30 #12
Jeg siger tak :-)
God weekend.
Avatar billede excelent Ekspert
07. juni 2009 - 09:13 #13
?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester