Tips og tricks

Ugenumre i Excel, Power Query, DAX m.v.

Har du delehund eller delebørn, så skal du passe lidt på her i 2021

Selv om det meste af verden, herunder Danmark, bruger ugenumre efter den internationale standard 8601, også kaldet system 2 eller europæisk ugenummerering, hvor den uge, der har flest dage (fire eller mere) i en uge liggende i det nye år, kaldes uge 1, bruger USA, Storbritannien m.v. bruger system 1, hvor den uge, der indeholder den 1. januar, kaldes for uge 1.

  • System 1 er det system, hvor den uge, der indeholder den 1. januar, er den første uge i året, og nummereres uge 1.
  • System 2 er det system, hvor den uge, der indeholder den første torsdag i året, er den første uge i året, og nummereres uge 1 (ISO 8601).

Det kan give anledning til nogen forvirring, hvis du for eksempel bruger Excel, Power BI, Power Query og DAX – og ja, det bliver måske en lille smule nørdet.

Lad os starte med at kigge på Excel

I Excel kan du bruge funktionen UGE.NR [WEEKNUM] til at returnere ugenummeret ud fra en dato, men da Excel jo er et amerikansk produkt, så får du altså som standard amerikanske ugenumre.

Ugenumre i Excel

Denne artikel er skrevet fredag den 8. januar 2021, og som du kan se, fortæller Excel, at det er uge 2 – det er dog ikke rigtigt, da både min kalender og heldigvis også Outlook siger, at vi er i uge 1.

Ugenumre i Excel

Bemærk også, at Excel som standard starter ugen om søndagen, da det jo også er normalt i USA, så uge 2 starter (i USA) søndag den 3. januar, og uge 53 og uge 1 bliver ganske, ganske korte.

Heldigvis kan du i nyere versioner af Excel angive, hvilken ugedag, ugen starter, og om du vil bruge system 1 eller system 2 til beregning af ugenumre.

= UGE.NR( dato; [returtype] )
= WEEKNUM( dato; [returtype] )

Hvis du ikke angiver returtype, så vil Excel anvende værdien 1, men ved at angive et 2-tal, så tror mange, at man så skifter til system 2, og det er ingenlunde tilfældet, da du som vist i efterfølgende tabel blot angiver, at ugen starter om mandagen i stedet for om søndagen.

Ugenummer

Som du også kan se i tabellen, skal du angive returtype 21 for at få det rigtige ugenr. i Danmark og det meste af resten af verden.

Ugenummer i Excel

I Excel 2013 indførte Microsoft en ny ugenummerfunktion, ISOUGE.NR, der automatisk bruger ISO 8601 til beregning af ugenummer.

= ISOUGE.NR( dato )
= ISOWEEKNUM( dato )

Ugenummer i Excel

ISOUGE.NR(dato) returnerer samme dato som UGE.NR(dato; 21), så det er lidt op til dig selv, hvilken en af dem, du vil anvende – jeg bruger selv ISOUGE.NR, da den efter min mening er mere læsbar, så eventuelle andre brugere af dit regneark skal sidde og undre sig over, hvad de 21 i formlen betyder.

Hvad med Power Query?

I Power Query, der jo både findes i Excel og i Power BI, har du desværre ingen mulighed for at skifte datosystem, og du vil derfor altid få vist amerikanske ugenumre, men du kan dog angive, hvilken dag ugen starter.

Ugenummer i Power Query

I det viste eksempel har jeg markeret datokolonnen, og derefter ved hjælp af kommandoen Tilføj kolonne > Fra data og klokkeslæt > Dato > Uge > Uge i år [Add Column > From Date & Time > Week > Week of Year].

Som standard anvendes kulturafhængig standard, hvilket betyder, at i Danmark anvendes mandag automatisk som første dag i ugen, mens man i USA automatisk anvender amerikansk standard.

Ugenummer i Power Query

Du kan angive 0-6 – eller Day.Sunday til Day.Saturday som argument for at angive, at ugen starter en bestemt dag, men husk, at Power Query som nævnt altid anvender system 1.

Du bør derfor efter min mening ikke bruge Power Query til at oprette ugenumre, men i stedet for eksempel tilføje en beregnet kolonne ved hjælp af DAX i Excel eller Power BI.

Hvad med DAX?

I DAX, Data Analysis Expressions, der også findes i både Excel og Power BI m.v., beregnes ugenumre ved hjælp af DAX-funktionen WEEKNUM, der opfører sig præcis som Excel-funktionen UGE.NR – der jo også hedder WEEKNUM på engelsk.

=WEEKNUM ( dato )

Hvis du ikke angiver returtype, så vil WEEKNUM i DAX opføre sig som i Excel, og returnere ugenummeret efter system 1, og ugen starter således også som standard om søndagen.

Ugenummer i DAX
Ugenummer i DAX

Som du kan se i den anden illustration, så viser formelhjælpen i DAX, at du kan angive 1 eller 2 for at angive, om ugen skal starte om søndagen eller om mandagen, og hvis du slår funktionen op i onlinehjælpen, så er det også den eneste info du får.

Ugenummer i DAX

Du kan dog angive præcis de samme argumenter som nævnt under Excel-funktionen UGE.NR, og derfor også angive 21 for at angive, at du vil anvende ISO 8601-ugenumre.

Så husk derfor, at bruge samme ugenummerstandard, hvis du bruger Excel m.v. til at lave oversigter over, hvilke uger du har Fido m.v.