Avatar billede cdc Novice
01. oktober 2002 - 23:09 Der er 5 kommentarer og
2 løsninger

Data sortering

Jeg har et regneark med navne nedad i række A, og med en masse resultater henad i kolonnnerne udenfor navnet. i sidste kolonne. f.eks Q vil jeg have resultatet af de 10 bedste resultater af de 50 der er lagt sammen. dvs. hvis han f.eks har 10 x 9 points som det bedste, er resultatet 90, enkelt ? Ikke for mig lige nu, er gået helt kold i toppen.
Avatar billede jkrons Professor
02. oktober 2002 - 01:33 #1
Noget i stil med:

=STØRSTE(a1:p1;1)+STØRSTE(a1:p1;2)+...+STØRSTE(a1:p1;10)

Bagefter kan du sortere på kolonne Q
Avatar billede Slettet bruger
02. oktober 2002 - 02:11 #2
Hvis du indsætter denne her...
------------------------------

Public Function SumAfBedste(Omraade As Range, Antal As Integer)

Dim topScores() As Variant
ReDim Preserve topScores(Antal - 1)
Dim stoerste As Variant
Dim sum As Integer
Dim fundet As Boolean

Dim i As Integer
Dim j As Integer
Dim mindste As Variant
Dim indexAfMindsteTalIArray As Integer
Dim mindsteTalIArray As Variant

mindste = Application.WorksheetFunction.Min(Omraade)

For i = 0 To Antal - 1
    topScores(i) = mindste
Next i

mindsteTalIArray = mindste
indexAfMindsteTalIArray = 0
sum = 0

For Each c In Omraade
    If Application.WorksheetFunction.IsNumber(c.Value) = False Then
        GoTo Skip
    End If

    mindsteTalIArray = topScores(0)
    indexAfMindsteTalIArray = 0
    For j = 0 To UBound(topScores)
        If topScores(j) < mindsteTalIArray Then
            mindsteTalIArray = topScores(j)
            indexAfMindsteTalIArray = j
        End If
    Next j
        fundet = False
        For i = 0 To Antal - 1
            If c.Value > topScores(i) Then
                fundet = True
                stoerste = c.Value
            End If
        Next i
        If fundet = True Then
            topScores(indexAfMindsteTalIArray) = stoerste
        End If
Skip:
Next c

For i = 0 To UBound(topScores)
    sum = sum + topScores(i)
Next i

SumAfBedste = sum

End Function
--------------------------

...i arkets kodemodul, kan du bruge den som en almindelig Excel funktion.
Den tager parametrene Omraade og antal.

f.eks. Omraade = A1:A10, antal = 3
Den returnerer summen af de højeste 3 tal i omraadet A1:A10
Avatar billede bak Forsker
02. oktober 2002 - 08:44 #3
En array formel skulle også kunne gøre det:
=SUM(STØRSTE(A1:P1;ROW(1:10)))
Afsluttes med ctrl-shift-enter istedet for bare enter, så den får tuborgklammer omkring {}
Avatar billede bak Forsker
02. oktober 2002 - 09:11 #4
Sorry, sådan noget sker når man bruger engelsk version.
=SUM(STØRSTE(A1:P1;RÆKKE(1:10)))
Avatar billede Slettet bruger
02. oktober 2002 - 12:39 #5
bak >> Det var ellers sjovt at skyde gråspurve med kanoner  :-)
Jeg må hellere kigge lidt nærmere på de der array formeler
Avatar billede cdc Novice
02. oktober 2002 - 12:44 #6
Er lige kommer tilbage på pinden, og kigger nærmere på bak´s svar først
Avatar billede cdc Novice
03. oktober 2002 - 10:27 #7
Deler bare point ud da det blev løst af en kollega :o)
Har ikke fået testet jeres svar selv...
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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