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.
Automatisk opdatering i konkurrence
Moderator: Lodahl
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
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
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.
{=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.
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.
{=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.