Avatar billede gnalling1 Nybegynder
26. oktober 2007 - 16:52 Der er 22 kommentarer og
1 løsning

LOPSLAG med VENSTRE funktion

Hej!

Hvordan opretter jeg følgende funktion:? I ark A har jeg en tekststreng på 11 karakterer, der skal slås op i ark B, som er et ark, hvor den sidste del af tekststrengen kan ændre sig og med meget lange tekststrenge. De første 11 karakterer ændrer sig ikke. Funktionen skal derefter slå værdien op i næste celle (tal), og returnere dette tal i ark A.

Er det muligt?

\Gnalling1
Avatar billede be_nice Juniormester
26. oktober 2007 - 17:18 #1
Kan du ikke i ark B lave en formel i en ekstra kolonne, hvor du angiver længden med venstre funktionen, og så lave dit opslag ud fra denne?

Din formel i ark B vil så til enhver tid give dig det rigtige opslag.

Be_Nice
Avatar billede excelent Ekspert
26. oktober 2007 - 17:46 #2
ellers :

Function Hent(Selle, rng, kol)
Application.Volatile
For Each c In rng
If Left(c, 11) Like Selle Then x = c.Offset(0, kol).Value: Exit For
Next
Hent = x
End Function

i arket skriver du :
=hent(A2;B!A2:A100;1)

hvor A2 er celle med tekststreng på 11
og B!A2:A100 er ark og område med dine lange tekststrenge
og 1 er 1 kolonne til højre hvor værdi hentes
Avatar billede excelent Ekspert
26. oktober 2007 - 20:01 #3
Hvis du navngir din liste fx. list, så kan følgende funktion anvendes
afslut formel med CTRL+SHIFT+ENTER

=FORSKYDNING(B!A1;SAMMENLIGN(A2;VENSTRE(list;11);0);1)
Avatar billede gnalling1 Nybegynder
29. oktober 2007 - 15:47 #4
Undskyld jeg ikke er kommet tilbage noget før, men vores server har været nede hele dagen. Til dig 'be nice' kan jeg desværre ikke sætte en ekstra kolonne ind i ark B, da det helt skal importeres helt uden ændringer.

Excelent - jeg kan godt få din funktion til at virke, men har problemer med funktionen FORSKYDNING, og det er den jeg helst vil have til at virke, da der er folk, der skal bruge det, som intet ved om VBA. Jeg har følgende: =FORSKYDNING(Ark2!A1;SAMMENLIGN(A1;VENSTRE(list;11);0);1)ud kommer resultatet #VÆRDI! Hvad gør jeg forkert?
Avatar billede gnalling1 Nybegynder
29. oktober 2007 - 15:52 #5
Hov, min Ctrl+SHIFT+ENTER var forsvundet igen. Nu kom det rigtige resultat frem. Det er jo "Excellent".....Den tager bare resultatet fra rækken nedenunder. Skal jeg gøre noget specielt for at tage resultatet fra samme række?
Avatar billede excelent Ekspert
29. oktober 2007 - 16:27 #6
ok denne returnerer værdi i Ark2 kolonne B i samme række

=FORSKYDNING(Ark2!A1;SAMMENLIGN(A1;VENSTRE(list;11);0);1;-2)

Udgangspunkt for søgning er Ark2!A1
Søge værdi er i A1 i arket hvor formel indsættes
Avatar billede gnalling1 Nybegynder
29. oktober 2007 - 16:35 #7
Kan ikke helt få det til at virke, men din funktion i VBA virker perfekt. Du skal derfor have mange tak for hjælpen. Smid lige dine points :o) Gnalling1
Avatar billede excelent Ekspert
29. oktober 2007 - 16:53 #8
Det er blot et spørgsmål om tilpasning

Hvad hedder arket værdi skal hentes fra ?
Hvilken celle er din søgeværdi (er det A1)?
Hvilken kolonne skal der søges i?
Hvilken kolonne skal værdi hentes fra

Husk afslut formel med CTRL+SHIFT+ENTER
Avatar billede gnalling1 Nybegynder
30. oktober 2007 - 07:46 #9
Arket hedder Ark2
Det er A1
Der skal søges fra A1:E300
Skal hentes fra kolonne E

Kan desværre først komme tilbage i morgen. Tak for hjælpen :o)
Avatar billede komputerdk Mester
30. oktober 2007 - 10:54 #10
hmm , kunne man ikke bare lave en =lopslag(venstre("ARK1!Celle med langstreng;11);'Ark2'!$a$1:$z$100;falsk)
så kan man altid lave en =hvis(er.fejl(lopslag som ovenstående....)=SAND;"Værdien findes ikke";lopslag som ovenstående)
Avatar billede excelent Ekspert
30. oktober 2007 - 15:51 #11
hmm komputerdk var det et spørgsmål :-)
jeg fik ikke LOPSLAG til at funke men dit virker måske
hvordan skal det se ud ?

ellers er mit forslag her :
=FORSKYDNING(Ark2!A1;SAMMENLIGN(A1;VENSTRE(list;11);0);4;-2)
Avatar billede komputerdk Mester
31. oktober 2007 - 06:32 #12
hehe.. var nu et forslag.. bruger den selv til lignende problematik.. var dog ikke lige sikker på 'erne og kan da se der mangler en kolonne reference...  lavede lige et hurtig
=LOPSLAG(VENSTRE(A2;6);Ark2!$A$1:$A$3;2;FALSK)


I kolonne A (ark1) står der fx. i celle A2: hansen_230734_et_eller_andet
(da hansen er delen jeg vil slå op med 6 karakterer, ergo venstre(A2;6)
Mit data jeg slår op i, er på ark2 - data der slås op i er i første kolonne (vigtigt)
fx ark2: celle A3 , står der hansen, celle B3 står der Mit navn er hansen.

lopslaget slår nu Ark1 celle A2 med de første 6 karakter fra venstre op i data på ark2 (HUSK fast reference med $ (tryk F4 når du har markeret dataområdet). Lopslaget når den finder den første reference , så tager den kolonne 2 i data og viser det.. hvis den ikke kan finde det, så viser den I/T# (derfor hvis(er.fejl(...)=sand, ), så viser den en lidt pænere fejlbesked..
Avatar billede gnalling1 Nybegynder
01. november 2007 - 10:12 #13
Hej Komputerdk! Er selv startet med dit forslag men gik i stå, da jeg ikke kunne få det til at virke, da det jo er i LOPSLAGET der skal laves en VENSTRE-funktion og ikke i A1 i ark1. Håber jeg gør mig selv forståelig....
Avatar billede gnalling1 Nybegynder
01. november 2007 - 10:31 #14
Hej excelent! Nu virker funktionen på mit første opslag. Til gengæld synes jeg, at jeg får problemer, når jeg kopierer funktionen til næste celle, så får jeg resultatet #I/T. Et andet spørgsmål kan man gøre noget for ikke at skulle huske at taste CTRL+SHIFT+ENTER, hver gang jeg ændrer funktionen? Denne afslutning kopieres heller ikke umiddelbart med, når jeg kopierer. Er det korrekt?
Avatar billede excelent Ekspert
01. november 2007 - 14:03 #15
jo hvis du trækker i fyldhåndtag kopieres {} med
(fyldhåndtag er det lille kryds nederst til højre i cellen)
Avatar billede excelent Ekspert
01. november 2007 - 15:06 #16
og med A1 i formel med absolut cellereference :

=FORSKYDNING(Ark2!$A$1;SAMMENLIGN(A1;VENSTRE(list;11);0);4;-2)

går så ud fra at den så skal søge efter værdien i A2, A3 osv. ?
Avatar billede gnalling1 Nybegynder
01. november 2007 - 17:03 #17
Jeg havde allerede lavet absolutte referencer, og med dem går det godt i celle A34, som den første celle hedder, hvor der skal kigges i, men i celle A35 får jeg resultatet #I/T - starter med at kigge i A3 hvor det første tal fremkommer.
=FORSKYDNING(Ark2!$A$3;SAMMENLIGN(A35;VENSTRE(list;11);0);4;-2)
Avatar billede excelent Ekspert
01. november 2007 - 17:20 #18
test om A35 er mere end 11 tegn
Avatar billede gnalling1 Nybegynder
02. november 2007 - 12:02 #19
Det er A35 ikke. A35 m.v. virker nemlig også når jeg bruger din VBA-funktion.
Avatar billede excelent Ekspert
02. november 2007 - 16:38 #20
Den virker ok i mit test ark, så det må være forhold hos dig
som driller :-)
du kan evt. sende filen til pm@madsen.tdcadsl.dk

Prøv lige at skrive hvilken range din list refererer til
(den som du har navngivet og bruger i formlen)
Avatar billede gnalling1 Nybegynder
05. november 2007 - 15:33 #21
Hej Excelent! Jeg har lidt svært ved at sende arket, da det indeholder fortrolige oplysninger fra mit firma, men du skal have mange tak for dit tilbud. Kunne du evt. sende din test til mig på annettepigen@hotmail.com (ja, undskyld opfindsomheden...)? Så kan jeg måske bruge dit som udgangspunkt?
Avatar billede excelent Ekspert
06. november 2007 - 15:20 #22
ok velbekom :-)
Avatar billede gnalling1 Nybegynder
06. november 2007 - 15:38 #23
Mange tak for hjælpen :o)
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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