Avatar billede email60 Nybegynder
11. februar 2014 - 22:55 Der er 4 kommentarer og
1 løsning

Får "Error 2015" ved Evaluate("VLookup...

Here goes: mit første spørgsmål på eksperten...

Jeg forsøger at bruge VBA til at køre et LOPSLAG på 500.000 rækker.
I arket; "Data", haves data i kolonne A til O. I kolonne P skal Lopslaget indsættes. Lopslaget slår op i kolonne E, og benytter tabelmatricen; "Sagskort!A5:C10000" (Sagskort er navnet på et andet ark).

Sub OpdaterSagsnavn()
    Dim rngStart As Range, lngRækker As Long, i As Long, varLS
    Dim rngSagskort As Range
   
    On Error GoTo Fejl
   
    Set rngStart = Data.Range("A11")               
    Set rngSagskort = Sagskort.Range("A5:C10000")   
    lngRækker = rngStart.CurrentRegion.Rows.Count 
       
    For i = 0 To lngRækker       
        varLS = Evaluate("VLookup(rngStart.Offset(i,4).Value,rngSagskort,3,true")
        rngStart.Offset(i, 15).Value = varLS
        Next i
    Exit Sub
Fejl:
    Fejlhåndtering 'En sub for sig selv
End Sub


Problemet er at Evaluate returnerer; "Error 2015". Jeg har læst mig frem til at det kan have med at gøre at Evaluate returnerer en string på over 255 characters... Det er bare ikke tilfældet: ingen celler i tabelmatricen indeholder over 255 karakterer (nogle få indeholder dog 0 karakterer/er tomme). Så jeg undrer mig over hvorfor jeg får denne fejlmeddelelse (??)

BONUSSPØRGSMÅL:
Vil "Application.WorksheetFunction.VLookup(..." være hurtigere at køre end Evaluate-metoden? (Jeg kan nemlig få førstnævnte til at fungere).

På forhånd stor tak :)
Avatar billede kabbak Professor
11. februar 2014 - 23:07 #1
Evaluate, bruges til udregninger

A =  Evaluate("12*10+2")
Avatar billede email60 Nybegynder
12. februar 2014 - 22:05 #2
Hej kabbak

Tak for hurtig tilbagemelding.

Det er også sådan jeg umiddelbart opfatter "Evaluate", men når jeg søger på nettet efter måder at køre VLOOKUP i VBA, foreslår flere at bruge Evaluate...
Avatar billede kabbak Professor
12. februar 2014 - 22:59 #3
varLS = Evaluate("VLookup(" & rngStart.Offset(i, 4) & "," & rngSagskort & ",3,true")
Avatar billede email60 Nybegynder
14. februar 2014 - 21:17 #4
Tak for svar.

Har du også en ide om:
"Application.WorksheetFunction.VLookup(..." vil er hurtigere at køre end Evaluate-metoden?

Sidste spørgsmål: hvordan giver jeg point? :) Skal du smide et svar før jeg kan give dem tildele dem?
Avatar billede kabbak Professor
14. februar 2014 - 21:58 #5
Se anden nederst kommentar her http://www.ozgrid.com/forum/showthread.php?t=52372

Der er kørt en test, der siger
'WSfunc_Call is Faster
'
'Eval_Formula:  0.4375 10
'WSfunc_Call:    0.3406 99
'Diff:  0.0968 11  Seconds
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
Kurser inden for grundlæggende programmering

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