Avatar billede killerich Juniormester
12. marts 2018 - 15:53 Der er 14 kommentarer og
1 løsning

Opslag med flere kriterier

Jeg har et regneark med følgende kolonner:

A                        B                      C                    D                  E
Kontraktnr.      Anlægsnr.    Generation        Værdi      Opslagsværdi

Der er mange rækker med samme kontraktnr., men med forskellige værdier i de øvrige kolonner.

Jeg ønsker nu at lave et opslag i kolonne E, hvor jeg henter værdien fra kolonne D, men kun på de rækker med den højeste generation (= en talværdi) i kolonne C indenfor samme kontraktnummer (kolonne A). På øvrige rækker indsættes værdien 0 i kolonne E.

Er der nogen der kan løse denne problemstilling? Det vil være ok at indsætte en ekstra mellemregningskolonne.
Avatar billede kim1a Ekspert
12. marts 2018 - 16:09 #1
I det nyeste Excel er der en maxifs må oversættes med noget i retning af største.hvis?

På den måde kunne hjælpe-mellemregnings-kolonnen være så den definerer nyeste generation af en given kontrakt, og så kan du bruge den til at sætte værdi i E i de steder hvor maxifs giver samme som kolonne C.
Avatar billede xl-Enthusiast Ekspert
12. marts 2018 - 16:53 #2
Giv nogle eksempler på data og ønskede resultater.
Kan der forekomme flere udgaver af højeste værdi /generation)?
Avatar billede killerich Juniormester
12. marts 2018 - 17:36 #3
@kim1a
lyder fedt med den funktion, og lige det jeg havde brug for. Men desværre har jeg indtil videre kun Excel 2010 😣

@xl-Entusiast
Den samme generationsværdi kan forekomme mange gange.
Lad os antage at to forskellige kontrakter optræder på hhv. 4 og 3 rækker. Kunne se ud som nedenfor

A.                B.                C.            D.              E
100.            1.                1.            10000
100.            2.                3.            12000
100.            3.                3.            15000
100.            4.                2.            11000
200.            5.                4.            10000
200.            6.                2.              8000
200.            7.                4.            10000

I eksemplet skal formlen altså hente værdier fra kolonne D på række 2,3,5 og 7 mens de øvrige rækker skal sættes til 0, da de har en lavere generation end de øvrige indenfor samme kontraktnummer.
Avatar billede xl-Enthusiast Ekspert
12. marts 2018 - 20:36 #4
Ved ikke om jeg kan komme med noget, men i givet fald bliver det tidligst i morgen aften.
Avatar billede killerich Juniormester
13. marts 2018 - 09:09 #5
Helt i orden. Håber du kan knække den :-)
Avatar billede finb Ekspert
13. marts 2018 - 09:15 #6
Måske har du mere gavn af Access:
""Der er mange rækker med samme kontraktnr""
Avatar billede anedi Ekspert
13. marts 2018 - 10:11 #7
Jeg har forsøgt mig med en ikke helt kort matrixformel. Jeg synes den virker, hvis jeg forstår opgaven korrekt.
Indsættes i E1, og evalueres ved at holde CTRL + SHIFT nede inden du trykker ENTER. Træk herefter ned til sidste række.

=IF(C1<>MAX(IF($A$1:$A$1000=A1;$C$1:$C$1000;0));"";SUM(IF($A$1:$A$1000&$C$1:$C$1000=A1&MAX(IF($A$1:$A$1000=A1;$C$1:$C$1000;0));$D$1:$D$1000;0)))

På dansk hedder formlerne IF=HVIS, MAX = MAKS.

Vh
Anedi
Avatar billede killerich Juniormester
13. marts 2018 - 11:35 #8
Hej Anedi,
Jeg tror næsten vi er der. Men din formel summer alle værdierne indenfor samme kontraktnr. i kolonne E. Det skal den ikke. Hvis vi tager udgangspunkt i mit eksempel ovenfor og kigger på kontraktnr. 100, så ønsker jeg helt konkret et resultat i kolonne E, hvor der står 0 i række 1, 12000 i række 2, 15000 i række 3 og 0 i række 4. Altså blot et opslag i kolonne D på række 2 og 3 fordi de har den højeste generationsværdi indenfor kontraktnr. 100, og ikke en sum af de to rækkers værdier tilsammen.

Jeg ved det er kringlet, men håber du kan hjælpe :-)
Avatar billede anedi Ekspert
13. marts 2018 - 12:42 #9
Ok, prøv denne i stedet:
=IF(C1<>MAX(IF($A$1:$A$22=A1;$C$1:$C$22;0));"";IF($A$1:$A$22&$C$1:$C$22=A1&MAX(IF($A$1:$A$22=A1;$C$1:$C$22;0));0;D1))

Stadig en matrix formel.

Vh
Anedi
Avatar billede anedi Ekspert
13. marts 2018 - 12:43 #10
Og ret lige selv række 22 til den sidste række i din oversigt.
Avatar billede killerich Juniormester
13. marts 2018 - 13:45 #11
Nu fungerer det næsten. Der skal lige byttes rundt på sand/falsk værdierne til den sidste hvis-formel. Dvs. D1;0)). Så får jeg fuldstændig korrekte resultater på den første kontrakt den kører igennem, men på alle de efterfølgende kontrakter får jeg værdien 0 på alle sammen. Når jeg trykker på "funktionsargumenter" for at se beregningen til en af de celler, der viser 0 i stedet for at slå op i D-kolonnen, som den burde, så kan jeg se i beregningen, at mit resultat er yderst til højre, men inden da er en masse 0-værdier.

Altså resultatet er beregningen er f.eks. = {0;0;0;0;0;0;0;0;0;0;10000;...

Har du en idé om, hvad dette kan skyldes?
Avatar billede anedi Ekspert
13. marts 2018 - 15:07 #12
Prøv lige denne forsimplede version i stedet:
=IF(C1<>MAX(IF($A$1:$A$1000=A1;$C$1:$C$1000;0));"";D1)

Giver den de rigtige resultater? Fortsat matrixformel
Avatar billede anedi Ekspert
13. marts 2018 - 15:09 #13
Den siger blot, at hvis værdien i C1 er anderledes end end den største Generation  værdi indenfor samme Kontrakt, så skriver den blank, og ellers skriver den værdien i D1.
Avatar billede killerich Juniormester
13. marts 2018 - 15:19 #14
Du er dagens helt! :-)

Tusind tak for løsning, Anedi ! Den virker helt som ønsket.
Avatar billede anedi Ekspert
13. marts 2018 - 15:37 #15
Det var godt det lykkedes.

Vh
Anedi
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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