Citat:
Ursprungligen postat av
526
Aha. Nej mejladressen och namn hänger bra ihop. Det är mejladressen som är listans unika värde.
Men varje mejladress har flera ämnen. Dvs det är dubbletter med personer som har flera ämnen, så de förekommer flera gånger i hela listan.
Dvs det är namn, e-post, ämne
Det jag vill är att få in alla ämnen i samma kolumn och cell men med samma unika mejladress
Tex
Kolumn A: Nils Nilsson
Kolumn B: nils@nilsson.com
Kolumn C: Apelsin
Men det finns en dubblett som är:
Kolumn A: Nils Nilsson
Kolumn B: nils@nilsson.com
Kolumn C: Äpple
Det man vill är att ha alla frukter i samma cell och ta bort dubbletter så personen så den bara finns en gång i listan:
Kolumn A: Nils Nilsson
Kolumn B: nils@nilsson.com
Kolumn C: Apelsin, Äpple
Helst kommaseparerat
OK, då är det lite tydligare. I så fall så är VBA-funktionen som jag beskrev tidigare fortfarande relevant. För att lösa det hela smidigt så bör listan lämpligtvis vara sorterad på namn och/eller mailadress först.
För att få ut en lista där varje namn/mailadress har en rad så är det sedan lämpligt att använda avancerat filter för att fixa en separat lista i en annan kolumn där varje namn/mailadress har en rad vardera. Titta exempelvis på
den här sidan, under rubriken "Filter Unique Records".
När du har en separat lista med bara en rad per namn/mailadress så är det dags att börja använda VBA-funktionen som jag tog med tidigare. Först behöver man då använda funktionen PASSA för att få fram hjälpsiffror som visar var respektive namn/mailadress förekommer för första gången i den ursprungliga större listan).
Ställ dig i en tom cell på samma rad som första raden i den kortare listan som du fick av det avancerade filtret. Skriv in formeln =PASSA(cell;område;0), där du istället för "cell" väljer antingen namnet eller mailadressen som finns på samma rad i den kortare listan och istället för "område" så har du den kolumn i den ursprungliga längre tabellen som innehåller samma (dvs namn eller mailadress, beroende på vad du valde som "cell"). Se till att låsa "område" med F4 så att det blir $-tecken och ta inte med eventuell rubrik i "område" utan bara själva namnen/mailadresserna. Kopiera sedan formeln till alla rader i den kortare tabellen,
Detta kommer för varje namn/mailadress att ge en siffra som visar första raden i den ursprungliga listan där namnet/mailadressen förekommer. För att förenkla hanteringen senare bör du även ställa dig i cellen precis under den sista PASSA-formeln och där lägga in formeln =ANTAL(område), där "område" ska vara samma som i PASSA-formlerna (detta kommer att ge en siffra för det totala antalet rader i den ursprungliga tabellen).
Nästa steg är att använda funktionen FÖRSKJUTNING för att skapa den uppsättning celler som man ska mata in i VBA-funktionen JoinText som jag beskrev tidigare. Då ställer du dig återigen i en tom cell på samma rad som det första namnet/mailadressen i den kortare listan som det avancerade filtret producerade. Skriv sedan formeln =JoinText(FÖRSKJUTNING(referens;tal;0;talnästa-tal;1);", ") där du ersätter "referens" med cellen precis över den första raden i din kolumn C (dvs om det står en rubrik "Frukt" över cellen där det står "Apelsin" i ditt exempel så ska "referens" vara cellen där det står "Frukt") samt ersätter "tal" med PASSA-formeln på samma rad och ersätter "talnästa" med cellen under (dvs cellen med PASSA-formeln på nästa rad). Kopiera sedan denna formel nedåt. Viktigt är även att låsa "referens" så att det blir $-tecken. Detta ska nämligen vara samma på varje rad. Däremot ska "tal" och "talnästa" inte låsas med $-tecken utan ska bli olika på varje rad när man kopierar formeln.
Detta förutsätter att du först har lagt in VBA-funktionen JoinText från mitt tidigare inlägg i en modul i arbetsboken. Du trycker Alt+F11 för att få fram VBA-fönstret, där du ska kopiera in funktionen i en modul. Det beskrivs
här hur du skapar en modul.
Skulle det vara så att du inte har någon rubrikrad i den ursprungliga tabellen (dvs att "Apelsin" står på rad 1) så måste du även modifiera FÖRSKJUTNING-formeln en aning. Då skriver du "tal-1" istället för bara "tal" i argumentet direkt efter "referens" (där "tal" återigen är cellen på samma rad med PASSA-formeln).