Avatar billede peter_b_jensen Nybegynder
27. november 2000 - 10:39 Der er 8 kommentarer og
1 løsning

Problemer med VLOOKUP (VOPSLAG)

Jeg sidder og roder med et regneark, hvor jeg skal matche et linienummer med en kundekode. Det ville være let nok, hvis der var tale om en til en relationer, hvor en linie kun kan have en kunde. Sådan er det desværre ikke. En linie kan i princippet have op til 6 forskellige kundekoder.

Jeg bruger VLOOKUP til at matche min TDK faktura (i Excel-format) op mod mit database udtræk. Problemet som ovenfor beskrevet udmønter sig i, at VLOOKUP kun returnerer den første kundekode per linie den støder på. Det skal retfærdigivis nævnes, at der på TDK fakturaen optræder det samme linienummer flere gange, som derved indikerer, at der er mere end en kundekode per linie.

Findes der nogen mulighed for at tvinge VOPSLAG til at returnere alle de forskellige kundekoder?

=VLOOKUP(A24;\'C:\\Pricing\\[TDK_q.xls]TDK_q\'!$B$42:$D$777;2;FALSE)

A24 = linienummer
B kolonnen indeholder tilsvarende linienummer
C & D kolonnen indeholder henholdsvis kunde og regnskabskode.

Hvis VLOOKUP ikke finder linienummeret, så returneres værdien FALSE.

Jeg håber der er et geni, der kan hjælpe mig, så jeg fortsat kan behandle det hele i Excel. Jeg ved godt at Access er bedre egnet, men så skal jeg konvertere format til vores regnskabssystem, hvilket jeg ikke lige kan overskue rent tidsmæssigt.

Mvh
Peter
Avatar billede d_warma Nybegynder
27. november 2000 - 11:11 #1
Forudsætning for svar:
Der tale om en, \"en-til-mange\"-relation, og ikke en \"mange-til-mange\" relation

Hvis du vender udtrykket om, så kan du finde en linie til hver kundekode.
Når du har fundet det, så kan du f.eks. via en pivottabel se hvilke kundekoder der hører til hvilke linier.

Håber det hjælper, ellers skriv igen.
Avatar billede peter_b_jensen Nybegynder
27. november 2000 - 11:32 #2
Hej Warma

Jammen jeg kan sagtens finde 1 linie til hver kundekode, men jeg kan ikke få VLOOKUP til at returnere værdien, og det skyldes, at VLOOKUP øjensynligt kun kan finde ud af at returnere den første værdi den støder på i et sorteret tabel matrix.

Jeg vil lige kigge på pivottabel, men jeg har ikke gode erfaringer dermed, desuden bliver data importeret fra en anden Excel-fil, som jeg ikke har lyst til at hælde ind i den fil jeg arbejder med, så kommer den op over 2mb, hvilket gør Excel ekstremt langsommeligt at arbejde med.

Mvh
Peter
Avatar billede nerøs Nybegynder
27. november 2000 - 18:41 #3
Hvis dine opslagsværdier er sorterede kan du bruge =match(opslagværdi;opslagsarray;matchtype)
hvis matchtype =0 findes nummer på 1. position i opslagsArray. Hvis opslagsArray=1 findes sidste.

Med disse 2 værdier kan du konstruere en reference vha =indirect(referenceText):

f.eks =indirect(\"C\" & 41+match(a24;$B$42:$D$777;0) & \":C\" & 41+match(a24;$B$42:$D$777;0))

Det er måske mere elegant at bruge =offset(ref;række;kolonne;højde;bredde) funktionen der angiver en reference i forhold til et område:
=offset(b41;match(a24;$B$42:$D$777;0);1;match(a24;$B$42:$D$777;1)-match(a24;$B$42:$D$777;0)+1)

Hvis du indtaster formelen som matrixformel kan du se værdierne hvis der er flere svar.

Vh Nerøs
Avatar billede peter_b_jensen Nybegynder
28. november 2000 - 09:40 #4
Hej Nerøs!

Desværre får jeg svaret #N/A når jeg laver det første step:
=MATCH(A24;TDK_q.xls!$B$2:$D$777;0)
=MATCH(A24;TDK_q.xls!$B$2:$D$777;1)

Jeg er lige lidt meget blank her! Jeg fatter ikke lige, hvorfor Excel returnerer #N/A, fordi den opslåede værdi forefindes i opslagsarray i 1 kolonne ($B$) - er jeg bare almindelig fatsvag?

Jeg har sorteret, så alle 3 kolonner er sorteret stigende.

Matrixformel - jeg har prøvet at følge anvisningerne i hjælpefunktionen på Excel, men jeg er bange for, at også her er jeg spejlblank.

Kan du lokkes til at skære dine forslag ud i pap?

Mvh
Peter
Avatar billede peter_b_jensen Nybegynder
28. november 2000 - 15:36 #5
Hej igen Nerøs!

Så fik jeg MATCH til at returnere start og slutværdien, nu skal jeg \"bare\" have returneret alle værdierne fra mit array, i stedet for ROW indentifikationen.

Jeg kan fortsat ikke fatte hvad du gør ovenfor i hverken INDIRECT eller OFFSET...så hvis du overhovedet orker, så må du meget gerne gøre mig mærkbart klogere.

Mvh
Peter
Avatar billede nerøs Nybegynder
28. november 2000 - 16:21 #6
Du skal have lavet en reference til det område der indeholder de returværdier du ønsker. =offset(ref;række;kolonne;rækker;kolonner) laver en cellerefernce i forhold til cellen ref.
Eksempel: =offset(A1;2;1;2;1)giver referencen
b3:b4. (2 rækker nedenfor a1,1 kolonne til højre,2 rækker,1 kolonne). Du har med match startrækken og slutrækken
for dine ønskede rækker i forhold til startcellen i dit matchområde.
Når du skal have en formel indtastet som matriks laver du først formlen almindeligt.
Når den virker trykker du F2 for at editere.
For at indtaste som matriks taster du på en gang SHIFT CTRL ENTER.
Hvis du vil fylde et område mærker du området op med formelcellen som den aktive og trykker samme tastkombination.
En anden måde at komme til andre end den første matriksværdi, er at bruge =index funktionen

VH Nerøs
Avatar billede peter_b_jensen Nybegynder
05. december 2000 - 10:09 #7
Hej Nerøs!

Jeg fik nogenlunde styr på sagerne, så send mig lige et svar, så du kan få dine velfortjente 60 point.

Mvh
Peter
Avatar billede nerøs Nybegynder
05. december 2000 - 16:12 #8
Hej Peter,
Fortsat held med projektet

VH Nerøs
Avatar billede peter_b_jensen Nybegynder
07. december 2000 - 14:32 #9
Hej Nerøs!

Tak for det! For det ikke skal være løgn, så skifter vi til en EDI-løsning i stedet :-)

Mvh
Peter
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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