Gå til innhold

Excel =SUMPRODUCT(LARGE.......


sgaah

Anbefalte innlegg

Heisann, til nå har mine excel kunnskaper passet mitt bruk. Men nå nylig så har jeg fått ett litt mer komplisert behov som jeg ikke helt klarer å løse. Håper det er noen som har en god løsning på mine utfordringer.

 

Jeg har ett regnark hvor jeg holder oversikt over resultater og vil gjere kunne hente ut topp 5 resultatene pr utøver og summeres disse i en celle. Det kan fort bli 15-20 resultater pr person, men som sagt så vil jeg ha topp 5 pr person summert sammen i en egen celle. Hver utøver sine resultater er på hver sin linje, men ikke i celler etterhver andre. Eks, utøver 1. B2,E2,L2,O2,T2,X2 osv

 

Jeg har prøvd å prøvd men ikke søren om jeg får det til. Etter mye leting på nettet kom jeg frem til en formel som såg ut til å være midt i blinken for meg, men får det fremdeles ikke til.

 

Den jeg har brukt går som følger, =SUMPRODUCT(LARGE(B4;E4;I4;L4;R;4,{1,2,3}))

 

Kunne sikkert hvert bedre forklart men håper at dere forstår hvor jeg vil. Krysser fingrene for at noen der ute har ett forslag til løsning :)

 

Lenke til kommentar
Videoannonse
Annonse

=SUMPRODUCT(LARGE({B4;E4;I4;L4;R;4},{1,2,3}))

 

?

 

Jeg ser at du har { rundt cellene til forskjell hva jeg har, men virker det hos deg? Ikke snakk om at jeg får dette til. Har prøvd Excel 2010 og Excel online.... Vist det virker, kunne du vert så snill å gitt meg en kjapp gjennomgang for dummies :)

Lenke til kommentar

Merkelige greier.... Hvilken utgave av excel bruker du? Når jeg har skrevet ferdig denne formelen så skal jeg trykke Ctrl+shift+Enter? Jeg begynner å skrive inn formelen for så å holde nede crtl når jeg velger dei aktuelle cellene. Nå som jeg skriver inn { } rundt dei valgte cellene så forsvinner fargen på disse cellene (dårligt forklart, men satser på at du skjønner). 

 

Kanskje påtide med ett litt excel kurs.... :)

Lenke til kommentar

Jeg brukte google docs for å teste ovenfor. Det virker selvfølgelig ikke i Microsoft Excel.  :hrm: 

Det er large-funksjonen som ikke virker som forventet (i første omgang).

Eksempel:
=LARGE({6, 23, 5, 2.3}, 2)
hentet fra følgende nettside gir feilmelding i microsoft excel selv om nettsiden er for nettopp microsoft excel:
http://www.techonthenet.com/excel/formulas/large.php

Lenke til kommentar

Takk for din hjelp så langt. Får vel lete litt mer rundt på nettet etter en løsning på dette. Kanskje du kan foreslå en annen løsning for å løse utfordringen som jeg har beskrevet tidligere?

Hei.

 

Kan lage en egen formel (funksjon) sikkert ikke den beste løsningen. men fungerer :)

 

du kan åpne vba editoren med Alt + F11

trykk på insert.

velg modul.

 

lim inn det under her. (koden)

hvis resultatene står i f.eks celle A1:A10 skriver du "=sumFiveBiggest(A1:A10)" i cellen du vil ha svaret ditt

SumFiveBiggest fungerer da som en formel

Option Explicit

Option Base 1

Function sumFiveBiggest(y As Range)

     Dim tempArr() As Variant, theR As Range, cel As Range, i As Double, r As Long, x As Double

    Set theR = y

    i = 0

    For Each cel In theR

        i = i + 1

    Next cel

   

    ReDim tempArr(i)

   

    r = 1

   

    For Each cel In theR

        tempArr® = cel.Value

        r = r + 1

    Next cel

    QuickSort tempArr, LBound(tempArr), UBound(tempArr)

    x = 0

   

    For r = LBound(tempArr) To UBound(tempArr)

        If r > i - 5 Then

            x = x + tempArr®

        End If

    Next r

    sumFiveBiggest = x

    Erase tempArr

End Function

Function QuickSort(arr, Lo As Long, Hi As Long)

    Dim varPivot As Variant, varTmp As Variant, tmpLow As Long, tmpHi As Long

    tmpLow = Lo

    tmpHi = Hi

    varPivot = arr((Lo + Hi) \ 2)

    Do While tmpLow <= tmpHi

        Do While arr(tmpLow) < varPivot And tmpLow < Hi

            tmpLow = tmpLow + 1

        Loop

        Do While varPivot < arr(tmpHi) And tmpHi > Lo

            tmpHi = tmpHi - 1

        Loop

        If tmpLow <= tmpHi Then

            varTmp = arr(tmpLow)

            arr(tmpLow) = arr(tmpHi)

            arr(tmpHi) = varTmp

            tmpLow = tmpLow + 1

            tmpHi = tmpHi - 1

        End If

    Loop

    If Lo < tmpHi Then QuickSort arr, Lo, tmpHi

    If tmpLow < Hi Then QuickSort arr, tmpLow, Hi

End Function

[code]\

Endret av Bigelk
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...