05. december 2012 - 17:36Der er
11 kommentarer og 1 løsning
Hurtigere end VLOOKUP?
Hejsa,
Jeg kører en helt almindenlig Vlookup i op til 800.000 linjer, hvor der "slåes op" i tilsvarende 22.000 linjer.
Som i nok kan gætte, så tager dette lidt tid, og mit spørgsmål er nu, om der er nogen der kender til en hurtigere funktion/formel/metode, for at kunne lave disse kalkulationer hurtigere?
Lidt mere information var på sin plads hvis det skal være muligt for andre at sige noget kvalificeret til dit spørgsmål!
800000 linjer - er det en abolut nødvendighed med så stort et område?
Hvis 800000 er absolut nødvendigt, hvorfor så bruge "full column" references (1048576)? I parentes bemærket - hvis 800000 er nødvendigt, så er Excel måske knap nok det rette værktøj.
Hvad mener du med, at der "slåes op" i tilsvarende 22.000 linjer?
Er det her: =vlookup(AW50;index!X:Z;2;false) den formel du faktisk bruger. Jeg spørger for at være sikker på, at du ikke arbejder med en fejlfunktion sådan, at du har to udgaver af VLOOKUP-formlen?
Der kunne jo også være enkelte svar til det, hvis det var et alment kendt problem. I don't know.
Ja, data fylder op til 800.000 linjer. Værdien der står ved hver celle, f.eks. AW50 (kunne også være AW265869), skal findes i index arket, som har op til 22.000 linjer. Når den finder værdien, returner den værdien som står i samme række, kolonne "2" fra venstre.
Synes godt om
Slettet bruger
05. december 2012 - 18:27#5
Hvis du kan/vil dele filen skal jeg gerne prøve at se, om jeg kan hjælpe, men ingen garanti.
Du siger op til 800000. Det kan vel kun betyde at 800000 ikke altid er nødvendigt?. Hvis det er situationen kunne det være relevant at lave et navngivet dynamisk område så man altid kun bruger det strengt nødvendige antal rækker.
Hvis du vil sende filen, såsend til: hans.knudsensnabelamail.tele.dk (udskift snabela med @)
Hmm. kan jeg desværre ikke. Sandt, der kan være ark, som nogen gange blot har 500.000 linjer. Men det vil for det meste være i den størrelses orden.
Du skriver noget, med et område, hvordan definere jeg det?
Synes godt om
Slettet bruger
05. december 2012 - 20:38#7
Det er svært at komme med noget relevant når man ikke kan få filen at se.
Du kan definere et navngivet dynamisk område på følgende måde:
Tryk på Formulas (på båndet), Name Manager. Tryk på New. I feltet Name skriver du d (eller et andet gyldigt navn) I feltet Refers to indsætter du følgende formel: =OFFSET(Sheet1!$X$1;;;COUNT(Sheet1!$X:$X);3). OK og Close.
Nu kan du bruge d i din opslagsformel:
=VLOOKUP(AW50;d;2;FALSE)
Der kan være mange andre muligheder for at gøre opslag hurtigere, men det er svært at sige noget relevant når man ikke kan få filen at se.
Overvej dog om du ikke kan sortere dine data så du kan bruge TRUE i stedet for FALSE som sidste argument. Der er en verden til forskel i hastighed.
Du taler om 22000 opslagsværdier. Vil det sige du har 22000 udgaver af LOOKUP-formlen, eller hvad? Forhåbentlig ikke.
Der er flere muligheder, men uden kendskab til filen vil jeg ikke komme med flere gisninger om, hvad der eventuelt kan hjælpe.
Synes godt om
Slettet bruger
05. december 2012 - 20:40#8
Jeg glemte at skrive, at hvis du har tekst i kolonne X skal du bruge COUNTA i stedet for COUNT i OFFSET-formlen.
Her anvendes binær søgning (TRUE som sidste argument) i stedet for lineær søgning (FALSE som sidste argument). Binær søgning er meget, meget hurtigere end lineær søgning.
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.