Avatar billede kim1a Ekspert
14. januar 2014 - 09:55 Der er 7 kommentarer og
2 løsninger

Funktionen Large og så et opslag

Som altid er mine løsninger lidt Storm P agtige.

Jeg har et antal lokationer som f.eks. har omsætning jeg følger ugentligt. Jeg vil gerne lave en graf som sætter dem i størrelsesorden - altså største omsætning først og så fremdeles.
Jeg vil dog helst at det sker automatisk, så jeg ikke manuelt skal sortere hver uge, og jeg vil gerne undgå VBA hvis muligt.

I en tabel har jeg referencedataen og jeg har indtil nu brugt funktionen Large et nyt sted så tallene sættes i størrelsesorden, og derpå lavet et opslag mod omsætningen som så angiver navnet på lokationen. Dette nye sted er hvor jeg laver diagrammet ud fra, på den måde sorteres de altid. Problemet er her i starten af året hvor flere har ens omsætning, så virker mit opslag ikke efter hensigten - flere står på 0 og derfor skriver den samme lokationsnavn ud for dem alle (da vlookup jo bare finder første gang dataen er der)

Nogen som har et forslag til løsning?
Avatar billede Slettet bruger
15. januar 2014 - 06:51 #1
Vil gerne gøre et forsøg hvis du vil oploade en (eventuel annonymiseret) fil med dine data.
Avatar billede kim1a Ekspert
23. januar 2014 - 14:17 #2
Jeg har nu uploadet:
http://gupl.dk/706599/

Jeg håber du (og evt. andre) stadig har mod på at se på den. I eksemplet kan du se at der er to værdier med 3,54 og derfor laver den opslag og kalder den det samme.

Jeg ønsker egentlig blot en automatisk sortering uden VBA, men hvis ikke det kan lade sig gøre så vil en umiddelbar VBA opstart også være ok - så kan jeg selv rette den til.
Avatar billede Slettet bruger
23. januar 2014 - 15:43 #3
Er det noget i retning af vedhæftede?

http://gupl.dk/706604/
Avatar billede Slettet bruger
23. januar 2014 - 15:46 #4
Glem lige #3 indtil videre.
Jeg kigger på det igen.
Avatar billede Slettet bruger
23. januar 2014 - 18:14 #5
Måske det her kan bruges?

http://gupl.dk/706608/

(Den var ikke nem!)
Avatar billede kim1a Ekspert
30. januar 2014 - 08:48 #6
Smuk løsning der virker efter hensigten. Smid et svar så jeg kan give dig point - hvis du har tid må du gerne forklare en lille smule.
Avatar billede kim1a Ekspert
19. februar 2014 - 16:44 #7
=LARGE(INDEX(table;;$A$2-2);ROWS($1:2))+ROWS($1:2)/9^9

Jeg har stadig ikke helt forstået hvad det er du opnår her, måske der er andre som kan kaste lys over det?
Avatar billede Slettet bruger
19. februar 2014 - 18:04 #8
=LARGE(INDEX(table;;$A$2-2);ROWS($1:1))+ROWS($1:1)/9^9


table er en navngiven formel. Find ud af, hvordan den er defineret under Formulas, Name Manager.

INDEX(table;;$A$2-2) returnerer hele den kolonne i table der er defineret ved A2-2.

ROWS($1:1) returnerer 1 (hvor mange rækker er der fra række 1 til 1)
ROWS($1:2) returnerer 2, altå når formlen kopieres 1 række nedad
ROWS($1:3) returnerer 3, altå når formlen kopieres nedad igen.

INDEX(table;;$A$2-2);ROWS($1:1)) returnerer dermed det der står i første række i den kolonne i table der er defineret ved A2-2

INDEX(table;;$A$2-2);ROWS($1:2)) returnerer det der står i den anden række i den kolonne i table der er defineret ved A2-2, osv.

Hvis vi et øjeblik kalder INDEX-formlen idx er hele LARGE formlen herefter reduceret til:

=LARGE(idx;ROWS($1:1))

Det vil sige i den første række hvor formlen findes vil den være:

LARGE(idx;1)

Kopieret 1 nedad vil den være

LARGE(idx;2)

osv.

Hele formlen kan med ovennævnte notation skrives:

=LARGE(idx;;ROWS($1:1))+ROWS($1:1)/9^9

Det sidste led tillægger bare et meget, meget lille, men stigende tal for hver gang formlen kopieres en celle nedad.

Jeg er klar over der findes en del flere formler, men nu må det være din egen tur til at gå igang med Evaluate Formula.

Hvis du efter at have brugt dette værktøj og studeret Excels hjælp til de relevante funktioner, så skal jeg gerne forsøge at hjælpe. Men du lærer ikke noget ved at få det hele serveret.
Avatar billede kim1a Ekspert
24. februar 2014 - 13:17 #9
Nu kan jeg se at du har nedlagt profilen, så det indebærer nok at jeg ikke kan lukke spørgsmålet til den korrekte bruger.

Jeg udtrykte mig også lidt uklart - det beklager jeg....
Det der mere undrede mig var f.eks. at du bruger $A$2-2 fremfor blot at skrive 1 i denne:
INDEX(table;;$A$2-2);ROWS($1:1)) returnerer dermed det der står i første række i den kolonne i table der er defineret ved A2-2.
Derudover ligeledes ROWS($1:2)/9^9 - hvorfor ikke blot lave 9^9 til f.eks. 1000000.

Men tak for hjælpen, hvis du ser dette så lader jeg spørgsmålet stå åben et par dage endnu så du kan nå at smide et svar.
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

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