Avatar billede M_M Mester
06. august 2016 - 16:25 Der er 16 kommentarer og
1 løsning

Opslag af et kriterie pr kolonne i flere kolonner og match med disse kriterier fra samme kolonner i opslagsmatriks i et andet ark samt efterfølgende kopiering fra opslagsmatriks

Hej. Jeg skal lave en makro, der i et udtræk (ark1) med 4 kolonner og flere tusinde rækker (varierende i længde) finder de tilsvarende værdier i en opslagsmatriks med tilsvarende kolonner (ark2 - ca 215 unikke kombinationer) - og når alle 4 værdier er matchet kopierer de 3 celler til højre for de pågældende 4 celler i opslagsmatriksen. Alle rækker i udtræksarket burde kunne findes i opslagsmatriksen, men selvfølge ville det være dejligt at få skrevet evt "N/A", i de celler der ellers udfyldes, ved de kombinationer, der ikke skulle findes endnu.Jeg har forsøgt med H-lookup, Index og Match, men tydeligt ikke erfaren nok til det, så håber I kan hjælpe. Jeg har lagt Excel-ark inkl forklaring op her:
https://www.dropbox.com/s/80nnuzf97zfbjxj/Lookup%20funktioner.xlsx?dl=0 På forhånd tak.
Avatar billede ebea Ekspert
06. august 2016 - 17:27 #1
Jeg har lagt nogle formler ind i dit Ark. Prøv og kig, om det var det du tænkte på!https://www.dropbox.com/s/lxsfr9jpsfz9l6a/indeks-funktioner.xlsx?dl=0
Avatar billede ebea Ekspert
06. august 2016 - 18:29 #2
Jeg har lavet en lille ændring (kolonne placering).
https://www.dropbox.com/s/lxsfr9jpsfz9l6a/indeks-funktioner.xlsx?dl=0
Avatar billede M_M Mester
07. august 2016 - 14:06 #3
Hej. Mange tak for input. Det var ikke helt hvad jeg søgte, så nu har jeg forsøgt at forklare det lidt bedre - se nederste gule kasse i første fane i Excel-arket på https://www.dropbox.com/s/3pxpqv859rlq0lb/Lookup%20funktioner2.xlsx?dl=0
Håber det giver mening.
Avatar billede ebea Ekspert
07. august 2016 - 16:52 #4
Formlerne var sådan set rigtige nok. Du skulle blot tilrette dem. Det har jeg gjort nu; Men af en eller anden årsag, kan jeg ikke uploade til Dropbox (i øjeblikket).
Ellers send en tom mail til post@ebe.dk  -  så sender jeg filen til dig.
Avatar billede ebea Ekspert
07. august 2016 - 17:00 #5
Så kom der "hul" igennem til Dropbox ;-)
https://www.dropbox.com/s/puusmwpyabvrb2s/Lookup%20funktioner2.xlsx?dl=0

Her er formlerne tilrettet til dit eksakte ark!
Avatar billede ebea Ekspert
07. august 2016 - 18:40 #6
Måske denne er mere præcist hvad du eftersøger!
https://www.dropbox.com/s/xbh5e390ls715rg/Lookup%20funktioner3.xlsx?dl=0
Avatar billede M_M Mester
07. august 2016 - 20:01 #7
Super, gælder jeg mig til at se. Måske jeg ikke kan komme på min pc før i morgen tidligt, da jeg er undervejs i bil og internetdeling ikke virker (pt på telefonen). Men tak indtil da?
Avatar billede ebea Ekspert
07. august 2016 - 21:00 #8
Se bort fra #6 da der er fejl i Dropbox Linket. Brug denne i stedet.
https://www.dropbox.com/s/faqpz5rsu24fbw6/Lookup%20funktioner3.xlsx?dl=0
Avatar billede M_M Mester
08. august 2016 - 13:37 #9
Will do. Jeg får nok først mulighed for det i morgen desværre. Desværre er en fra familien røget på sygehuset, så der haster vi til nu.
Avatar billede M_M Mester
10. august 2016 - 15:39 #10
Tak for tålmodigheden. Og tak for løsningen - det var lige det jeg søgte, så jeg vinger den lige af som løsning:-)
Avatar billede ebea Ekspert
10. august 2016 - 16:25 #11
Du er velkommen! Det var godt den kunne bruges ;-)
Avatar billede M_M Mester
11. august 2016 - 17:26 #12
Hej igen. Jeg er endt lidt i et problem, da jeg skulle have formlen i VBA - til makroen, som jeg er ved at lave. Jeg vil høre, om du kan hjælpe?

Jeg har indsat formlen som Array, men får stadig fejl, og kan heller ikke indsætte som Value.

Range("E5").FormulaArray = "=INDEKS(Konverteringstabel!F:F;SAMMENLIGN(1;(Konverteringstabel!A:A=A5)*(Konverteringstabel!B:B=B5)*(Konverteringstabel!C:C=C5)*(Konverteringstabel!D:D=D5);0))"
giver følgende fejl:
Run-time error ?1004?
Kan ikke angive egenskaben FormulaArray for klassen Range.

Tanken er at indsætte formlen i en tabel i rækken lige nedenunder kolonneoverskriften "Klassificering - Farve" og så kopiere den ned til sidste række i kolonnen. Til generelt info har jeg i makroen talt antal rækker som "lRow" og kolonner som "lCol", så disse kan benyttes som dynamiske variable.

Jeg er indtil nu nået til nedenstående (hvor jeg dog ikke lige pt ved hvordan jeg laver CZ1 dynamisk og bruger lCol hertil) hvor jeg så ville indsætte formlen efter nedenstående kode og kopiere den ned i kolonnen (hvad der typisk sker automatisk med ikke-array formler så vidt jeg ved)

StrKolonne = Application.WorksheetFunction.Match("Klassificering - Farve", Range("A1:CZ1"), 0)
    Columns(StrKolonne).Select
    ActiveCell.Offset(1, 0).Select

På forhånd tak:-)
Avatar billede ebea Ekspert
11. august 2016 - 17:44 #13
Har du mulighed for at sende / uploade arket. Så er det nemmere at se hvad der sker, og hvad data du har.
Avatar billede ebea Ekspert
11. august 2016 - 18:15 #14
Error 1004 fejlen, kan måske også stamme fra, at i Formlen, har jeg ikke defineret nogle række Nr. men brugt hele kolonnernes række antal.
Prøv, hvis ikke du sender filen, at definere et række antal i hver af de kolonner som er i brug (f.eks F2:F4000).
Så er der ikke så stort et resource forbrug på din maskine, som måske udløser 1004 fejlen.
Avatar billede M_M Mester
11. august 2016 - 19:21 #15
Jeg har oploaded en fil inkl. makro på dropbox. Jeg har lige forsøgt at finpudse lidt, så det ikke var så forvirrende - nu kommer 1004 fejlen ikke, men formlen indsættes stadig ikke. Her er filen: https://dl.dropboxusercontent.com/u/102831098/Lookup%20funktioner4.xlsm
Jeg har ladet de oprindelige formler blive for de sidste 5 rækker.

Det der er mit mål er at fremsøge kolonnen med overskriften "Klassificering - Farve", indsætte formlen i rækken nedenunder kolonneoverskriften og så kopiere denne formel hele kolonnen ned.

Lidt mere finpudsning, som jeg også kan bruge fremover, så tænker jeg her også, at man kan bruge lRow og lCol til at gøre makroen dynamisk/og også hurtigere - dvs. istedet for nedenstående, hvor jeg skriver CZ1 (kan jeg ændre til noget a la lCol række 1) og E:E (til noget a la E2:E" & lRow). Det er jeg i fuld gang med at google og har brugt en del af dagen på:-)
StrKolonne = Application.WorksheetFunction.Match("Klassificering - Farve", Range("A1:CZ1"), 0)
    Columns(StrKolonne).Select
    ActiveCell.Offset(1, 0).Select
    Range("E2").FormulaArray = "=INDEKS(Konverteringstabel!F:F;SAMMENLIGN(1;(Konverteringstabel!A:A=A5)*(Konverteringstabel!B:B=B5)*(Konverteringstabel!C:C=C5)*(Konverteringstabel!D:D=D5);0))"
Avatar billede ebea Ekspert
11. august 2016 - 19:46 #16
Prøv denne lettere tilrettede udgave. Den kører uden problemer hos mig. Men det bedste er altid at have den fil som det bruges "rigtigt i", og ikke en test fil.

https://www.dropbox.com/s/iyvrcjbii72nz1o/Lookup%20funktioner4.xlsm?dl=0
Avatar billede ebea Ekspert
11. august 2016 - 19:54 #17
Jeg kan se efterfølgende, at du selv har afhjulpet 1004 fejlen. Det var den som jeg ville afhjælpe, ved at ændre i formlen, som du kan se at jeg har gjort, ved at definere rækkerne. Jeg har ikke testet din makro funktion, da jeg er lidt i tvivl om, hvad det egentlig er du vil med hele funktionen, kontra det oplæg du har i dit eksempel.

Ellers brug min email: post@ebe.dk  så bliver denne tråd her, ikke så mega lang ;-)
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