Automatisk opdatering i konkurrence

Brugerhjælp og support til regneark i LibreOffice Calc

Moderator: Lodahl

Post Reply
Beleriand
Posts: 22
Joined: 7. Oct 2009 16:01

Automatisk opdatering i konkurrence

Post by Beleriand »

Her er et problem, som jeg har kæmpet med i lang tid:

Vi forestiller os, at tre drenge springer længdespring. De skal lave ti spring hver. Så laver vi et regneark, hvor der i A1 står navnet på den første dreng, som springer, og i B1 står hvor langt han sprang. Så får vi et regneark, som ser sådan ud for de første fire spring i konkurrencen:

Ole 2,00
Peter 2,20
Jens 1,80
Ole 2,50

Nu vil jeg gerne udvide regnearket med en automatisk opdateret resultattabel i området C1:E4. Første række indeholder drengenes navne (C1:E1), anden række (C2:E2) er altid de tre drenges tredjeseneste spring, tredje række (C3:E3) er altid det næstnyeste spring, og fjerde række (C4:E4) er altid det nyeste spring.

Det skal altså være en funktion, som til C4 (med Oles nyeste spring) skal kunne finde sidste gang der står Ole i kolonne A, og så gå et skridt til højre og hente tallet i kolonne B. Til C3 (med Oles næstnyeste spring) skal den finde næstsidste gang der står Ole i kolonne A og hente tallet fra det spring i kolonne B. o.s.v.

Jeg kan simpelthen ikke gennemskue, hvordan man får regnearket til at gå ned i kolonne A og finde eksempelvis det næstsidste af Oles resultater, når placeringen af det næstsidste resultat ændrer sig i takt med, at Ole får skrevet flere og flere resultater på listen.
Jens S
Posts: 1091
Joined: 25. Mar 2007 22:42

Post by Jens S »

Hej

Hvis du har f.eks. Ole i celle C1, så brug følgende formel i C2:
HVIS(RÆKKE($A1)>SUMPRODUKT($A$1:$A$4=$C$1);"";STØRSTE(HVIS($A$1:$A$4=$C$1;$B$1:$B$4;"");RÆKKE($A1)))
Dette er en matrixformel og du afslutter den med ctrl+shift+enter i stedet for enter. (eller klik på funktionsikonen fx til højre for formellinjen, og marker som matrix). Kopier denne formel nedad, men husk at trykke på ctrl mens du trækker i cellehåndtaget (fordi det er en matrixformel).
Resultatet vil så give dig:
Længste spring
Næstlængste spring
(tom) hvis der kun er sprunget 2 gange

mvh
Jens
Beleriand
Posts: 22
Joined: 7. Oct 2009 16:01

Post by Beleriand »

Tak for det. Når jeg kopierer formlen til C2 bliver resultatet imidlertid det samme som i C1 (2,50). Skyldes det eventuelt, at min oversættelse til min engelske udgave af Calc er forkert? Den ser sådan ud:

{=IF(ROW($A1)>SUMPRODUCT($A$1:$A$4=$C$1);"";MAX(IF($A$1:$A$4=$C$1;$B$1:$B$4;"");ROW($A1)))}

Du skriver også, at resultatet vil give Længste og Næstlængste spring. Men jeg vil gerne have springene rangeret efter tid og ikke efter længde. Altså så det er Oles tre seneste spring, som fremgår. Ikke de tre længste.
Jens S
Posts: 1091
Joined: 25. Mar 2007 22:42

Post by Jens S »

På engelsk lyder formlen:
{=IF(ROW($A1)>SUMPRODUCT($A$2:$A$13=$C$1);"";LARGE(IF($A$2:$A$13=$C$1;$B$2:$B$13;"");ROW($A1)))}
Husk at udskifte referencen $C$1 (=Ole) til $D$1 når du kopierer til kolonnen til højre for C.
Hvis du ønsker de sidste 3 spring for Ole og jeg antager at du udfylder nedad i kolonne A og B efterhånden som springene udføres:
FORSKYDNING($A$1;STØRSTE(HVIS($A$1:$A$4="Ole";RÆKKE($A$1:$A$4);"");RÆKKE($A1))-1;1) stadig matrixformel, som sidste spring og kopier nedad for at få næstsidste og tredjesidste spring. På engelsk {=OFFSET($A$1;LARGE(IF($A$1:$A$4="Ole";ROW($A$1:$A$4);"");ROW($A1))-1;1)}
Jeg har ikke i disse formler taget hensyn til om Ole har sprunget 3 gange, så der vi optræde en fejlmeddelelse i det tredje spring, hvis han kun har sprunget 2 gange.
Post Reply