background-shape
feature-image

Table of contents

Ledelsen vil se omsætningen år til dato og sammenlignet med sidste år. Du finder TOTALYTD og SAMEPERIODLASTYEAR, skriver to målinger, og trækker dem ind i en tabel med måneder.

Resultatet står der, men det er forkert. Enten er det samme tal i alle rækker, eller kolonnen med sidste år er tom.

Formlerne er næsten aldrig problemet. Det er datoerne bag dem. Her får du de to målinger, der virker, og de fem fejl, der typisk står i vejen. Regn med en halv time, hvis du bygger med undervejs.

Først: målingerne

DAX-funktionerne hedder det samme på dansk og engelsk, og Power BI bruger komma mellem argumenterne. Eksemplerne bruger en salgstabel ved navn Salg og en datotabel ved navn Dato.

Omsætning = SUM(Salg[Beløb])

Omsætning ÅTD = TOTALYTD([Omsætning], Dato[Dato])

Omsætning sidste år = CALCULATE([Omsætning], SAMEPERIODLASTYEAR(Dato[Dato]))

ÅTD sidste år = CALCULATE([Omsætning ÅTD], SAMEPERIODLASTYEAR(Dato[Dato]))

ÅTD står for år til dato: summen fra 1. januar og frem til og med den måned, rækken viser. Har du læst mit indlæg om CALCULATE, kender du princippet: SAMEPERIODLASTYEAR flytter datofilteret et år tilbage, og CALCULATE regner omsætningen ud med det nye filter.

Virker de ikke, er det næsten altid en af de fem ting herunder.

1. Du bruger datoen fra salgstabellen

Hvad det betyder: Du har skrevet Salg[Dato] i stedet for Dato[Dato] i målingen.

Typisk årsag: Det er den dato, der ligger lige for. Men salgstabellen har kun datoer, hvor der er solgt noget. Weekender, helligdage og stille dage mangler. Tidsfunktionerne i DAX regner med, at alle dage er der, og så får du fejl eller forkerte tal.

Sådan retter du: Lav en separat datotabel med én række for hver dag. Vælg Ny tabel under Modellering, og skriv:

Dato =
VAR Dage = CALENDAR(DATE(2025, 1, 1), DATE(2026, 12, 31))
RETURN
ADDCOLUMNS(
    SELECTCOLUMNS(Dage, "Dato", [Date]),
    "År", YEAR([Dato]),
    "Måned", MONTH([Dato]),
    "Månedsnavn", FORMAT([Dato], "mmm")
)

Træk derefter en relation fra Dato[Dato] til Salg[Dato] i modelvisningen.

2. Datotabellen er ikke markeret som datotabel

Hvad det betyder: Power BI ved ikke, at din tabel er kalenderen.

Typisk årsag: Det er et ekstra trin, der er let at glemme.

Sådan retter du: Højreklik på tabellen Dato i ruden Data, vælg Markér som datotabel (engelsk: Mark as date table), og vælg kolonnen Dato. Power BI tjekker samtidig, at der ingen dubletter, tomme celler eller huller er. Får du en fejl her, har du fundet problemet.

3. Datotabellen har huller eller halve år

Hvad det betyder: Datotabellen starter 15. marts eller slutter i september.

Typisk årsag: Den er lavet ud fra første og sidste salgsdato i stedet for hele år.

Sådan retter du: Lad den altid gå fra 1. januar i det første år til 31. december i det sidste. Microsoft anbefaler hele år, og SAMEPERIODLASTYEAR har brug for, at de samme dage findes året før.

4. Filteret når ikke frem

Her er der to varianter med hvert sit symptom.

Samme tal i alle rækker: Der mangler en relation mellem Dato og Salg, eller den er inaktiv (vist med en stiplet linje i modelvisningen). Så filtrerer måneden i din visual kun datotabellen, og salget bliver ikke delt op. Ret det ved at oprette relationen fra Dato[Dato] til Salg[Dato] eller gøre den aktiv.

ÅTD er lig med månedens tal, og sidste år er tom: Måned- eller datokolonnen i din visual kommer fra Salg, ikke fra Dato. Tidsfunktionerne arbejder på datotabellen, men filteret fra salgstabellens egen kolonne bliver liggende. Så kan der ikke lægges måneder sammen, og et år tilbage findes der intet salg med den dato.

Sådan retter du: Brug altid År, Måned og Dato fra datotabellen i visuals og udsnitsværktøjer. Skjul datokolonnen i Salg, så du ikke kommer til at vælge den ved et uheld.

5. Kurven fortsætter ind i fremtiden

Hvad det betyder: År til dato står fladt i oktober, november og december, selv om de måneder ikke er kommet endnu.

Typisk årsag: Datotabellen går til 31. december, som den skal. TOTALYTD viser det, der er solgt til og med hver måned, og det er det samme tal, når der ikke kommer nyt til.

Sådan retter du: Lav en måling, der kun viser tal frem til sidste salgsdato:

Sidste salgsdato = CALCULATE(MAX(Salg[Dato]), REMOVEFILTERS())

Omsætning ÅTD vist =
IF(MIN(Dato[Dato]) <= [Sidste salgsdato], [Omsætning ÅTD])

Når betingelsen ikke er opfyldt, giver IF et tomt resultat, og så viser Power BI ingenting i de måneder.

Når året ikke starter 1. januar

Følger jeres regnskabsår ikke kalenderåret, giver du TOTALYTD en slutdato for året som tredje argument. Slutter regnskabsåret 30. juni:

Omsætning regnskabsår til dato = TOTALYTD([Omsætning], Dato[Dato], "6/30")

Microsoft anbefaler formatet måned/dag i anførselstegn, så Power BI ikke misforstår datoen.

Værd at kende: den nye kalendermodel

Microsoft har en nyere måde at lave tidsberegninger på, hvor du definerer en kalender på datotabellen i stedet for at markere den. Den kan blandt andet regne på uger, hvilket de klassiske funktioner ikke kan. Den er stadig en prøveversion, som du selv skal slå til under Indstillinger, så til de fleste rapporter er den klassiske metode ovenfor stadig det sikre valg.

Prøv det selv

Jeg har lavet en Excel-fil med salg fra januar 2025 til september 2026, kun på hverdage, så du kan se fejl nummer 1 med egne øjne, hvis du bruger datoen fra salgstabellen. Salget ligger i tabellen Salg, så den dukker pænt op i Navigator, når du henter filen ind i Power BI Desktop.

Forsiden viser trinene og målingerne. Facit-arket viser for hver måned i 2026 omsætningen, år til dato, sidste år og år til dato sidste år, så du kan se, om du rammer rigtigt.

Hent øvelsesfilen (Excel, xlsx)

Til sidst

Når datotabellen er på plads, er tidsberegninger i Power BI hurtige at skrive. Det meste af arbejdet ligger i at få datoerne rigtige én gang, og så kan du genbruge den samme datotabel i alle dine rapporter.

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 får timerne tilbage lidt efter lidt.

Kontakt

Vil du have timerne tilbage?