06. januar 2009 - 19:14Der er
4 kommentarer og 1 løsning
hente udvalgte rækkefelter til nyt ark med tekst som nøgle
Hej, Excel 2007 dansk version. Jeg har aldrig prøvet VBA.
Har et ark1 med fortløbenden nr. i kolonne A, ca. 2300 personnavne (efternavn og fornavn) i kolonne B, fødselsdato i kolonne F og flere kolonner fra c:ai med både tal og tekst værdier.
I ark2 har jeg i a1 "Indtast navn nedenfor" (a2) I ark2 har jeg i b1 "Indtast fødselsdato dd-mm-åååå" (b2) I ark2 c2, d2, e2 osv vil jeg på baggrund af kombinationen indtastet navn+indtastet fødselsdato hente udvalgte rækkefelter (f.eks.rækkefelt kolonne c,f,g,ai) der hører til den unikke navn+fødselsdato kombination. Jeg kan også starte med en løsning kun på navn, men flere personer hedder det samme.
Problemet er at navnene indeholder æ,ø,å,ö,é osv og nogle af de simple formler jeg har fundet returnerer en fejl.
Det var godt nok hurtigt :-) Og det virker. Har selv ændret til de udvalgte kolonner jeg skal bruge i første område, f.eks. =INDEKS(FNL!y1:y2388;SAMMENLIGN($A$2&$B$2;FNL!$B$1:$B$2388&FNL!$F$1:$F$2388;0))
Et supplerende spørgsmål hvis det er ok - jeg kan også oprette et nyt?
I ark2 med de udvalgte felter vil jeg i et nyt felt (f.eks. b10) hente en talværdi på baggrund af op til fire af de udvalgte felter. Eks. Hvis c2="a","b" eller "c") så gå til ark3, ark4 eller ark5 OG d2="x" OG e2="xx" gå til celle m3 og tæl f2 trin nedad og returnér værdien eller d2="x" OG e2="yy" gå til celle m36 og tæl f2 trin nedad og returnér værdien eller d2="y" OG e2="xx" gå til celle i69 og tæl f2 trin nedad og returnér værdien eller d2="y" OG e2="yy" gå til celle i100 og tæl f2 trin nedad og returnér værdien til b10 ark2
x,y,xx,yy står i tabellerne i ark3, 4 og 5 hvis det er nogen hjælp
Det er et opslag i løntabeller i ark3, 4 og 5. Hver ark indeholder 4 tabeller, som identificeres ved kombinationen d2 OG e2. f2 (et tal) viser hvilket (trin)beløb i tabellen der skal hentes i forhold til startcellen.
Function Opslag2(ark As Range, værdi1 As Range, værdi2 As Range, rk As Range)
Set v1 = Range(værdi1.Address): Set v2 = Range(værdi2.Address)
Opslag2 = "Fejl" If ark = "a" Then Set sh = Sheets("Ark3") If ark = "b" Then Set sh = Sheets("Ark4") If ark = "c" Then Set sh = Sheets("Ark5")
If v1 = "x" And v2 = "xx" Then Opslag2 = sh.Cells(3, "M").Offset(Range(rk.Address)) If v1 = "x" And v2 = "yy" Then Opslag2 = sh.Cells(36, "M").Offset(Range(rk.Address)) If v1 = "y" And v2 = "xx" Then Opslag2 = sh.Cells(69, "I").Offset(Range(rk.Address)) If v1 = "y" And v2 = "yy" Then Opslag2 = sh.Cells(100, "I").Offset(Range(rk.Address))
Jeg har selv fundet en løsning med en masse hvis og hvis, men din ser nu noget mere elegant ud... =HVIS((OG($D$5="xxx";$C$5="xx";ELLER($E$5="yyy";$E$5="zzz";$E$5="vvv")));VOPSLAG('Salary 1'!$M$45;'Salary 1'!$M$45:$M$73;$K$5);HVIS(OG($D$5="xxx";$C$5="ww";ELLER($E$5="yyy";$E$5="zzz";$E$5="vvv"));VOPSLAG('Salary 1'!$M$4;'Salary 1'!$M$4:$M$33;$K$5);HVIS(OG($D$5="qqq";$C$5="xx";ELLER($E$5="yyy";$E$5="zzz";$E$5="vvv"));VOPSLAG('Salary 2'!$M$37;'Salary 2'!$M$37:$M$65;$K$5); osv osv
Har som skrevet ikke prøvet programmering før og er ikke helt sikker på hvor jeg skal skrive din kode?
Min egen amatør metode virker, så det er vel ved at være på tide med nogle point til dig? :-)
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.