Unika element i en tabell

Ibland måste man inte förstå alla detaljer bara slutprodukten blir som den ska. Ett makro kan exempelvis lösa en uppgift utan att du behöver förstå koden bakom. På samma sätt visar jag i detta tips en komplex Excelformel som löser en uppgift. Formeln är enkel att återanvända på vilket annat exempel som helst, bara genom att byta ut en enda del.

Problemställning

Jag har en tabell med data där jag vill får ut alla unika element för varje kolumn. Du kan lösa detta manuellt med en enkel funktion (UNIK [UNIQUE]). Däremot måste du upprepa funktionen för varje kolumn separat. Jag vill ha en formel som löser detta i ett steg.

Med unika element så avser jag innehåll som finns i en kolumn uppradat utan dubbletter. Med andra ord är det samma värden som visas när du använder filter i Excel (se bild nedan).

Underlaget är en tabell med 6 kolumner och 250 rader. Dessutom är tabellen formaterad som en Exceltabell med namnet Support. I lösningen är det bara att ändra tabellnamnet för att använda formeln i en annan tabell.

Lösning

För att ”förenkla” lösningen någon så återanvänder jag rubrikerna från tabellen och formeln kommer enbart att spilla ut de unika elementen för respektive kolumn.

Själva formeln klistras in i första cellen under rubrikerna.

Formel på svenska

=LET(data;Support;resultat;REDUCE(””;SEKVENS(1;KOLUMNER(data));LAMBDA(acc;kol;
HSTACK(acc;UNIK(FILTER(INDEX(data;;kol);INDEX(data;;kol)<>””)))));OMFEL(UTESLUT(resultat;;1);””))

Formeln på engelska

=LET(data;Support;resultat;REDUCE(””;SEQUENCE(1;COLUMNS(data));LAMBDA(acc;kol;
HSTACK(acc;UNIQUE(FILTER(INDEX(data;;kol);INDEX(data;;kol)<>””)))));IFERROR(DROP(resultat;;1);””))

Totalt 12 individuella Excelfunktioner som är sammansatta till en formel. Trots det är det bara tabellnamnet (Support) som du behöver ändra för att denna formel ska fungera på vilken annan tabell som helst, oavsett antal kolumner eller rader.

Resultatet blir att formeln spiller ut alla unika element för varje kolumn (se bild).

Det blir en tydlig bild över vilken data som finns i tabellen. I och med att det är en formel så uppdaterar formeln automatiskt resultatet när tabellens data förändras.

Lösningen bygger på en komplex formel. Samtidigt behöver du inte förstå alla detaljer i formeln, det är en universell formel och du kan använda den på vilken annan tabell som helst.

Bonus

För att även få med rubrikerna så blir formel ännu lite längre men då slipper man även det manuella steget. I denna formel finns tabellnamnet på två ställen och du måste ändra det för andra underlag.

Formel på svenska

=LET(data;Support;rubriker;Support[#Rubriker];resultat;REDUCE(””;SEKVENS(1;KOLUMNER(data));
LAMBDA(acc;kol;HSTACK(acc;UNIK(FILTER(INDEX(data;;kol);INDEX(data;;kol)<>””)))));VSTACK(rubriker;OMFEL(UTESLUT(resultat;;1);””)))

Formel på engelska

=LET(data;Support;rubriker;Support[#Headers];resultat;REDUCE(””;SEQUENCE(1;COLUMNS(data));
LAMBDA(acc;kol;HSTACK(acc;UNIQUE(FILTER(INDEX(data;;kol);INDEX(data;;kol)<>””)))));VSTACK(rubriker;IFERROR(DROP(resultat;;1);””)))

 

Tips!

Tänk på att citattecken i Excel formlen ska vara rakra ”, inte typografiska citattecken ”, som det ibland blir när något kopieras från en webbsida.