Visar inlägg med etikett VLOOKUP. Visa alla inlägg
Visar inlägg med etikett VLOOKUP. Visa alla inlägg

torsdag 6 december 2018

Jämföra två listor i excel

Det finns många sätt att jämföra data i två tabeller med varandra. Här är en metod som jag ofta brukar använda mig av.


Låt oss säga att vi har en lista med filmtitlar som vi vill jämföra med en annan. I det här fallet har jag tagit John Carpenters filmografi som regissör. Inga konstigheter, källan är wikipedia. Jag lägger den i en egen flik. Specifika flikar för olika information är oftast att föredra. Därifrån länkar man samman alltig i en ”operativ flik” på så sätt kan man ändra i sin masterdata utan att behöva skriva om en massa formler. Vi kallar denna flik för Filmography.



I en annan flik skriver vi vilka av dessa titlar som vi äger på DVD, blu-ray eller annat förmat. Just nu är vi bara intresserade av att jämföra vad vi äger med vad karln har regissörat så format struntar vi i. Låt oss säga att vi äger dessa. Vi kallar fliken för Owned.


Det är viktigt att komma ihåg att formatet måste vara exakt lika som tabellen vi ska jämföra med. Ett mellanslag mer gör att formeln spricker.

Det vi skulle kunna göra är att skriva en enkel lookupformel. Det skulle i det här fallet se ut så här: =VLOOKUP(A1;Owned!A:A;1;FALSE). Det betyder att vi letar upp värdet i cellen A1 i kolumnen A i fliken Owned. Hittar vi en träff kommer innehållet att skrivas till cellen där vi har vår formel.


Ganska enkelt men med ett par nackdelar. För det första blir det lätt rörigt med två kolumner som egentligen säger samma sak. För det andra. Är det rätt fullt med #N/A errors bland datan. För att komma runt det första problemet brukar jag jag bygga till ett vilkorsargument. Jag vill helt enkelt att de titlar jag äger ska stå som ”owned” i kolumn B och inte som titeln. Det jag ber excel göra är helt enkelt att skriva ”owned” om resultatet i vår andra tabell, den med titlarna vi äger, stämmer överens med texten i kolumn A.

=IF(VLOOKUP(A1;Owned!A:A;1;FALSE)=A1;"Owned") Här talar jag om att om resultatet av lookupformeln är samma som den text vi letar efter så ska texten ”Owned” visas. Stämmer det inte överrens ska cellen vara tom. Det ger oss fölande resultat.


Fortfarande är de fula #N/A felen kvar men de ska vi ta bort i nästa steg. Vi instruerar helt enkelt excel att ta bort dem om det visar sig att det blir ett fel. Vi vill kanske inte ta bort alla fel som kan uppstå utan vara dem av #N/A karaktär. Följande tillägg fixar det år oss.

=IFNA(IF(VLOOKUP(A1;Owned!A:A;1;FALSE)=A1;"Owned");"")

Voila!

VLOOKUP med multipla kriterier

Visst har vi alla råkat ut för situationer där vi behöver ha flera vilkor sanna för att VLOOKUP ska vara rätt operation. Det finns ett ganska enkelt sätt att kringå den formen av problematik.

Låt oss säga att vi har följande information i en tabell.


Vi vill plocka priset här ifrån men vi vill samtidigt att alla kriterierna i kolumn A-D stämmer med målet. Antagligen skulle vi kunna skapa en massa krångliga AND och IF formeler för att få det att funka. Eller kanske ännu heller INDEX och MATCH. Men det bli en massa kod som vi egentligen inte behöver. Lösningen ligger i att skapa en ny column och göra en enda formel i denna. Den vi ska använda os av heter CONCAT


Det är en busenkel formel som trycker ihop all info i de fält vi väljer till ett enda. Med =CONCAT(B2:E2) Får vi följande resultat.


Fyll formeln i hela kolumnen som ska användas och gör samma sak i den mottagande tabellen. Vi får följande struktur.

Prislista

Lager

Det enda vi behöver göra nu är en vanligt VLOOKUP mot A kolumnen för att få det resultat vi vill ha. =VLOOKUP(A2;Prislista!A:F;6;FALSE)


Självklart kan vi snygga till det genom att formatera cellerna som valuta och plocka bort #N/A med ett enkelt tillägg I formeln. =IFNA(VLOOKUP(A2;Prislista!A:F;6;FALSE);"")