Avatar billede ramp Nybegynder
05. december 2012 - 17:36 Der 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?
Avatar billede Slettet bruger
05. december 2012 - 17:44 #1
Hvordan ser din formel ud?

Hans
Avatar billede ramp Nybegynder
05. december 2012 - 17:48 #2
=vlookup(AW50;index!X:Z;2;false)
Avatar billede Slettet bruger
05. december 2012 - 18:05 #3
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?
Avatar billede ramp Nybegynder
05. december 2012 - 18:16 #4
Hejsa,

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.
Avatar billede 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 @)
Avatar billede ramp Nybegynder
05. december 2012 - 18:34 #6
Hej igen,

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?
Avatar billede 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.
Avatar billede 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.
Avatar billede finb Ekspert
05. december 2012 - 22:29 #9
Må det være vba ?
Avatar billede Slettet bruger
06. december 2012 - 06:49 #10
En ting mere (forudsat dine data er sorteret).

I stedet for: =VLOOKUP(AW50;d;2;FALSE)

kan du eventuelt prøve med:

=IF(VLOOKUP(AW50; d;1;TRUE)=AW50; VLOOKUP(AW50;d;2;TRUE);"Findes ikke")

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.

Hans
Avatar billede ramp Nybegynder
06. december 2012 - 09:39 #11
Det hjalp en hel del:-) Great.

tror den er "speedet" op til hurtigst mulige nu.

Tak for hjælpen, smid et svar.
Avatar billede Slettet bruger
06. december 2012 - 09:46 #12
OK.
Hans
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



IT-JOB

Udviklings- og Forenklingsstyrelsen

Systemejer med teknisk flair

Saab Danmark A/S

Junior System Engineer

Danske Commodities A/S

Chief Information Security Officer

Netcompany A/S

Managing Architect