Flet to tabeller på en fælles nøgle med Power Query

Table of contents
- Hvad en fletning er
- 1. Gør begge lister til forespørgsler
- 2. Flet dem
- 3. Vælg den rigtige join-type
- 4. Fold tabelkolonnen ud
- 5. De fire ting der får resultatet til at se forkert ud
- Greb der gør det hurtigere næste gang
- Prøv det selv
- Til sidst
Du har en liste med ordrer, og et kundekartotek et andet sted. På ordrerne står kun et kundenummer, men du skal bruge kundenavn, by og segment ud for hver linje.
Så du skriver et opslag i én kolonne, kopierer det til den næste og retter kolonnenummeret. Tre kolonner, tre formler. Næste måned kommer der en ny eksport, og formlerne skal trækkes ned igen.
Det kan klares med ét greb i Power Query. Her får du fremgangsmåden trin for trin, og de fire ting der typisk får resultatet til at se forkert ud. Regn med et kvarter første gang.
Power Query ligger indbygget i Excel til Microsoft 365 og i Excel 2016 og nyere til Windows. Den danske oversættelse er ikke helt konsekvent, så navnene kan variere lidt mellem versioner.
Hvad en fletning er
En fletning (Merge på engelsk) lægger to tabeller sammen ud fra en kolonne de har til fælles, typisk et id som et kunde- eller varenummer. Resultatet er alle kolonnerne fra den første tabel, plus de kolonner du vælger fra den anden.
Forskellen fra et opslag er, at du henter alle felterne på én gang, og at Power Query husker opskriften. Når der kommer nye ordrer, klikker du Opdater alle, og fletningen kører igen.
Tabellerne kaldes venstre og højre. Venstre er den, du vil beholde alle rækkerne fra, her ordrerne. Højre er den, du henter oplysninger fra, her kundekartoteket. Hold fast i den rækkefølge, for den afgør hvad join-typen gør.
1. Gør begge lister til forespørgsler
Power Query kan kun flette forespørgsler, ikke almindelige celleområder.
Markér en celle i ordrelisten, gå til fanen Data og klik Fra tabel/område. Er listen ikke allerede formateret som tabel, så laver Excel den om undervejs. I editoren vælger du Luk og indlæs til og derefter Opret kun forbindelse.
Gør det samme med kundekartoteket. Nu ligger begge lister klar som forespørgsler, uden at fylde to nye ark op.
2. Flet dem
Gå tilbage til fanen Data, klik Hent data, Kombiner forespørgsler og Flet. Sidder du allerede i editoren, ligger samme kommando på fanen Hjem som Flet forespørgsler.
I dialogboksen vælger du ordrerne i den øverste rulleliste og kundekartoteket i den nederste. Klik derefter på kolonnen KundeID i begge tabeller, så de bliver markeret.
Nederst i dialogboksen fortæller Power Query, hvor mange rækker der matcher. Læs den linje. Står der 12 ud af 15, ved du allerede nu, at tre ordrer ikke finder deres kunde.
Kolonnerne behøver ikke hedde det samme i de to tabeller, men de skal have samme datatype. Et kundenummer, der er tekst i den ene og tal i den anden, matcher aldrig.
3. Vælg den rigtige join-type
Join-typen afgør, hvilke rækker der kommer med. Der er seks, men to dækker næsten alt i en kontorhverdag:
- Venstre ydre: alle ordrer, og kundedata hvor der er et match. Ordrer uden kunde står med tomme felter. Det er den, du vil have her, og den Excel normalt foreslår.
- Indre: kun de ordrer, der har en kunde. Ordrer uden match forsvinder stille, og summen falder uden at du opdager hvorfor.
De andre er værd at kende til. Venstre anti giver dig kun de ordrer, der ikke har en kunde, hvilket er en hurtig måde at finde huller i kartoteket på. Fuld ydre tager alt fra begge sider.
Klik OK.
4. Fold tabelkolonnen ud
Nu sker det, der får mange til at give op. Der er kommet en ny kolonne med navnet på kundetabellen, og i hver celle står der bare Table.
Det er ikke en fejl. Hver celle indeholder de rækker fra kundekartoteket, der matchede netop den ordre. De skal foldes ud.
Klik på ikonet med de to pile, der peger væk fra hinanden, i kolonneoverskriften. Vælg de felter du vil have med, her Kundenavn, By og Segment. Fjern fluebenet ved Brug oprindeligt kolonnenavn som præfiks, ellers kommer alle dine nye kolonner til at hedde noget med Kunder foran. Klik OK.
Glemmer du dette trin og indlæser resultatet, får du en kolonne fuld af tabeller, der ikke kan bruges til noget i regnearket.
5. De fire ting der får resultatet til at se forkert ud
Der kommer flere rækker ud end der gik ind
Hvad det betyder: du havde 15 ordrer, og nu har du 17.
Typisk årsag: en kunde står to gange i kartoteket. En fletning henter alle matches, ikke kun det første, så hver ordre på den kunde bliver til to rækker. Summen af beløbene stiger tilsvarende, og det er den fejl, der er farligst, fordi alt ellers ser rigtigt ud.
Sådan retter du: markér KundeID i kundeforespørgslen og vælg Fjern rækker, Fjern dubletter, før du fletter. Tæl altid rækkerne før og efter.
Nogle ordrer får tomme felter, selv om kunden findes
Hvad det betyder: du kan se kunden i kartoteket, men fletningen finder hende ikke.
Typisk årsag: nøglerne er ikke helt ens. Power Query skelner mellem store og små bogstaver, så k1006 matcher ikke K1006. Et mellemrum efter nummeret tæller også som et tegn.
Sådan retter du: markér KundeID i begge forespørgsler, gå til fanen Transformér, Formatér, og vælg både den der fjerner mellemrum (Trim i den engelske version) og STORE BOGSTAVER. Gør det før fletningen.
Ingen rækker matcher overhovedet
Hvad det betyder: dialogboksen siger 0 ud af 15.
Typisk årsag: datatyperne er forskellige. Kundenummeret er tal i den ene tabel og tekst i den anden.
Sådan retter du: klik på typeikonet til venstre i kolonneoverskriften, og giv nøglen samme type i begge forespørgsler. Tekst er det sikre valg, hvis numrene kan have foranstillede nuller.
Ordrer forsvinder
Hvad det betyder: der kommer færre rækker ud end der gik ind.
Typisk årsag: join-typen står på Indre. Så ryger alle ordrer uden match.
Sådan retter du: åbn trinnet igen via tandhjulet under Anvendte trin, og skift til Venstre ydre. Vil du vide, hvilke ordrer der mangler en kunde, så lav en ekstra fletning med Venstre anti.
Greb der gør det hurtigere næste gang
- Ret nøglerne i kildeforespørgslerne, ikke i resultatet. Så er de rene, uanset hvad du senere fletter dem med.
- Brug Flet forespørgsler som nye, når du vil beholde de to kildeforespørgsler urørte. Så kan du genbruge kundekartoteket i flere fletninger.
- Flet på flere kolonner ved at holde Ctrl nede, mens du klikker. Det er løsningen, når nøglen består af to dele, fx varenummer og lager. Rækkefølgen du klikker i, skal være den samme i begge tabeller.
- Skal du kun hente en enkelt værdi ind i et ark, der ikke er bygget på Power Query, er et opslag stadig fint. Der har jeg skrevet om XLOOKUP i praksis.
Prøv det selv
Jeg har lavet en Excel-fil med en ordreliste og et kundekartotek, hvor fejlene er bygget ind: en kunde der står to gange, et kundenummer med lille begyndelsesbogstav, et med et mellemrum til sidst, og en ordre på en kunde der slet ikke findes. Rækkerne der driller, er markeret med gult.
Første gang du fletter, får du 17 rækker og en sum på 108.365 kr. Når nøglerne er rettet og dubletten fjernet, skal du ende på 15 rækker og 92.465 kr., som i facit-arket. Trinene står på forsiden.
Hent øvelsesfilen (Excel, xlsx)
Er dine data rodede, før de overhovedet kan flettes, så start med oprydningen i Power Query.
Til sidst
At hente oplysninger fra én liste over i en anden er en af de opgaver, der fylder mest i en almindelig kontoruge. Med en fletning laver du det én gang og opdaterer resten af året.
Hos KontorAkademiet tager jeg en time om måneden med den slags praktiske greb. Ikke i et bestemt program, men i det du sidder med til daglig, så du og dine kollegaer bliver lidt bedre hver gang.