Visa svenska veckonummer med VECKONR (WEEKNUM)



Att räkna ut svenska veckonummer med Excel är lättare sagt än gjort. Dels finns det nämligen många olika sätt att räkna veckonummer på (det finns ingen världsstandard), dessutom har Microsoft lyckats med konststycket att både skriva förvillande och felaktiga hjälptexter för den funktion som skall göra jobbet, VECKONR (eller på engelska WEEKNUM).

När det gäller sätt att räkna veckonummer på så finns det finns visserligen en europeisk standard, ISO8601, som Sverige och de flesta europeiska länder följer, men inte alla. Vad som krånglar till det är främst när vecka nummer 1 skall börja, men även hur man hanterar sista veckan (finns det en vecka 53, eller kanske en vecka 54?). Dessutom börjar veckan på olika dagar, vår svenska vecka börjar på måndag, medan andra börjar veckan på andra veckodagar.  Som ett exempel kan man ta måndag den 31 december 2012 som är vecka 1 i Sverige, vecka 53 i USA och vecka 54 i en del andra länder.  En slutsats av detta är att man generellt sett skall vara försiktig att använda veckonummer i internationella sammanhang.

Enligt ISO8601:2000 börjar vecka ett börjar på den måndag den vecka som innehåller den första torsdagen på året, eller den vecka där 4 januari ligger. Om vecka 52 slutar före den 28 december tillkommer extraveckan 53 som då vandrar in på det nya året. 2010 börjar vecka 1 i Sverige redan måndag den 30 december (den första torsdagen på året inträffar 2 januari).  2016 ligger 1 januari på en fredag och vår svenska vecka 1 får då vänta till måndag den 4 januari, och hela veckan innan (från måndag den 28 december till söndag den 3 januari) blir då extraveckan 53.

Krångligheten syns följaktligen även i Excels funktion VECKONR som har tio olika sätt att räkna ut veckonummer på (s.k. returtyper). Tyvärr har Microsoft dessutom både skrivit krångligt och fel i många hjälptexter som skall guida användaren att använda funktionen.

VECKONR har följande syntax: (Tal;Returtyp). Där Tal är det datum (tidsserienummer) som man vill veta veckonummer på och Returtyp är vilken veckonummertyp som skall gälla. I Sverige (tillsammans med större delen av Europa och de länder som ansluter sig till ISO 8601) använder typ 21.
Vill du veta dagens datums veckonummer kan du lägga in funktionen IDAG() som Tal, mao:
=VECKONR(IDAG();21) ger svenskt veckonummer.

Notera att Excels hjälpfunktion inte är så behjälplig i detta fall och innehåller både fel och otydligheter. En förklaring till all förvirring är att olika excelversioner har olika antal returvärden. Returvärde 21 finns i Excel 2010, men vad jag förstått inte i tidigare versioner. Detta är dock inte helt lätt att upptäcka när man söker stöd från Excels hjälp…

Fel från office.microsoft.com

Fel från office.microsoft.com

Läser man hjälptexten för funktionen VECKONR http://office.microsoft.com/sv-se/excel-help/veckonr-HP005209337.aspx ser det ut som om funktionen bara har två returtyper, 1 eller 2.

 

Tar man fram dialogrutan Infoga funktion för VECKONR står det att ”Returtypen är ett tal (1, 2 eller 3) som bestämmer typen på returvärdet”, otydligt och fel! Det finns tio olika returtyper, men ingen av dem är 3! Klickar man för att få en fördjupad hjälp så kan man ju tycka att man skulle skrivit vilka länder som använder de olika returtyperna, men icke… Åtminstone så skulle man önskat att man varit tydligare med returtypen för den europeiska standarden  ISO8601

(Visited 5 702 times, 1 visits today)

4 comments

  • Stort tack för detta, helt riktigt som du säger är microsofts hjälptexter mycket förvirrande kring detta..

  • Bonustips 2: I Excel 2013 kommer en ny funktion ISOWEEKNUM (vet ännu namn i svenskspråkig version) som gör samma sak som VECKONR med returtyp 21. Dvs. istället för VECKONR(A1;21) räcker det med ISOWEEKNUM(A1) för att få veckonummer enligt ISO8601-standard. Dock lär denna funktion inte vara bakåtkompatibel så den som använder äldre versioner får hålla sig kvar vid VECKONR(A1;21).

  • Bonustips 2: I Excel 2013 kommer en ny funktion ISOWEEKNUM (vet ännu namn i svenskspråkig version) som gör samma sak som VECKONR med returtyp 21. Dvs. istället för VECKONR(A1;21) räcker det med ISOWEEKNUM(A1) för att få veckonummer enligt ISO8601-tandard. Dock lär denna funktion inte vara bakåtkompatibel så den som använder äldre versioner får hålla sig kvar vid VECKONR(A1;21).

  • Bonustips: En annan datumfunktion som har argumentet returtyp är VECKODAG(tal;[returtyp]) som ger ett tal 1-7 som representerar vilken dag i veckan det är. Om returtyp utelämnas antas att veckan börjar på söndag (dvs söndag = dag 1). Anger man 2 som returtyp så startar veckan på måndag (dvs måndag = dag 1).