02. marts 2017 - 21:57Der er
3 kommentarer og 1 løsning
Indhente flere informationer fra anden tabel ala avanceret lopslag
Hej Jeg håber nogle har fantasi til en løsning.
Jeg har tabel, hvor der i en af cellerne er semikolon separeret information. I anden tabel har jeg information med 2 kolonner. Kolonne A er navnet; kolonne B er en dato.
Jeg ønsker at hente i noget ala lopslag funktionalitet informationen ind for alle de semikolonseparerede information.
Eks: Første ark: 1. Celle B2: Horsens;Esbjerg;Herning
2. Tabel i andet ark: Horsens | 22042017 Esbjerg | 21012017 Herning | 01012012
3. Ønsket information i celle: Horsens 22042017; Esbjerg 21012017; Herning 01012012
Udfordringen for mig er, at det skal skabes i samme celle. Den bliver del af tabel, hvor mange steder kommer i celle... og jeg derfor ikke ønsker voldsomt mange kolonner (så ikke tekst til kolonner som løsning)
Jeg har lavet en løsning, som gør det du efterspørger. Du bliver dog nødt til at gøre noget end bare at skrive en formel. Har stjålet lidt fra nettet og ændret i VBA koden, samt sammensat en ny makro.
Indsæt denne UDF i et nyt VBA module.
Function MultiArrayVLookup(LookUpVal, LookUpRng As Range, LookUpCol As Long)
For i = LBound(v, 1) To UBound(v, 1) w(i) = WorksheetFunction.VLookup(v(i), LookUpRng, LookUpCol, False) x(i) = v(i) 'Debug.Print x(i) & " " & w(i) y(i) = x(i) & " " & w(i) Next i 'Debug.Print MultiArrayVLookup MultiArrayVLookup = Join(y, ";")
End Function
Du skal nu splitte dit data fra tabellen i det andet ark. Det kan du enten gøre manuelt eller du kan bruge nedenstående VBA macro - indsæt det i et nyt eller samme module som overstående. Vær opmærksom på at Sheet2 skal ændres til dit ark med data tabellen og at Table1 skal ændres til din datatabels navn. Følgende macro splitter(Text to Column) din Table1 i Sheet2 og trimmer alle felterne, dvs. den sletter mellemrum efter tekst.
Sub Text2ColAndTrim() Dim c As Variant, rng As Range
' Ændre Sheet2 til dit ark med tabellen Set rng = Sheet2.ListObjects("Table1").Range ' ændre table1 Set rng = Sheet2.Range(rng, Cells(Rows.Count, rng.Column).End(xlUp)) 'Debug.Print rng.Address
For Each c In Sheet2.UsedRange ' Udskift Sheet2 med dit sheetnavn c.Value = Application.Trim(c) Next c End Sub
I C2, der hvor du vil have resultatet vist, skriver du: =MultiArrayVLookup($B2;Sheet2!$A$2:$B$4;2) Formlen er: MultiArrayVLookup(Opslags Værdi; Opslags range; Opslags Kolonne i range)
Kør Text2ColAndTrim makroen efter du har skrevet formlen ind og det burde virke :-)
Tak for hurtigt svar... jeg tror jeg er meget tæt på at have den løst... dog arbejder jeg med dansk version.... har rettet alle henvisninger til tabel og ark... men hvor skal jeg rette funktions-teksten (Vlookup, multiarray mv...).
Hej Tak for inputtet - jeg fik det til at fungere via ovenstående. Mvh Henrik
Synes godt om
Ny brugerNybegynder
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.