Datumhantering i Excel behövs så fort man arbetar med rapportering, uppföljning eller annan tidsbaserad information. Funktionerna nedan täcker det mesta av vardagsbehovet: bygga datum, plocka isär dem, räkna skillnader och hoppa över helger och helgdagar.
Funktionsnamnen står på svenska med det engelska namnet inom parentes, eftersom en formel skriven i ett svenskt Excel inte går att klistra in i ett engelskt.
Grunder
Datumsystem
I Excel är ett datum ett tal. Serienummer 1 är den 1 januari 1900, och varje dygn därefter lägger till 1. Det är därför A2-A1 ger ett antal dagar, och det är därför ett datum kan se ut som 46204 när cellen råkar vara formaterad som tal – värdet är rätt, formatet är fel.
Två saker följer av systemet:
- Datum före den 1 januari 1900 går inte att räkna med. De måste lagras som text, och då fungerar ingen av funktionerna nedan.
- Excel tror att 1900 var ett skottår. Felet är ärvt från Lotus 1-2-3 och rättas aldrig, eftersom varje kalkylblad i världen bygger på det. Det påverkar bara beräkningar som passerar februari 1900.
Det finns också ett äldre datumsystem som utgår från 1904. Undvik det – blandar du arbetsböcker med olika system förskjuts alla datum fyra år.
Komma eller semikolon?
I Sverige används komma som decimaltecken, medan engelskspråkiga länder använder punkt. Ett komma kan därför inte också skilja argument åt, och svenska Excel använder semikolon i stället.
// Svenska Excel
=SUMMA(A1; A2; A3)
// Engelska Excel
=SUM(A1, A2, A3)
Nedan används semikolon genomgående.
När datumet inte är ett datum
Datum som importerats från ett annat system ligger ofta som text, och då fungerar varken sortering eller subtraktion. Ett snabbt test: text vänsterställs som standard, tal och datum högerställs. =ÄRTEXT(A1) (ISTEXT) ger ett säkrare svar.
Rätta det med Data › Text till kolumner › Slutför på hela kolumnen, eller med DATUMVÄRDE nedan.
Skapa datum
DATUM (DATE)
DATUM(år; månad; dag) bygger ett datum av tre tal. Användbar när delarna kommer från olika celler.
=DATUM(2026; 7; 23) // => 2026-07-23
Funktionen räknar över gränserna, vilket är praktiskt oftare än man tror: månad 13 blir januari året efter, och dag 0 blir sista dagen i föregående månad.
=DATUM(2026; 13; 1) // => 2027-01-01
=DATUM(2026; 8; 0) // => 2026-07-31
IDAG (TODAY) och NU (NOW)
IDAG() ger dagens datum, NU() ger datum och klockslag.
=IDAG()
=NU()
Båda är flyktiga: de räknas om vid varje ändring i arbetsboken, inte bara när du öppnar den. Vill du frysa dagens datum i en cell skriver du in det med Ctrl+Skift+; i stället.
DATUMVÄRDE (DATEVALUE)
DATUMVÄRDE(datumtext) gör om ett datum som ligger som text till ett serienummer.
=DATUMVÄRDE("2026-07-01") // => 46204
Svaret är ett tal tills du formaterar cellen som datum. Funktionen förstår bara format som Excel känner igen i sin egen språkinställning – "1 juli 2026" fungerar i svenska Excel, "July 1, 2026" gör det inte.
Läsa ut delar av ett datum
DAG (DAY), MÅNAD (MONTH), ÅR (YEAR)
// A1 = 2026-07-01
=DAG(A1) // => 1
=MÅNAD(A1) // => 7
=ÅR(A1) // => 2026
VECKODAG (WEEKDAY)
VECKODAG(datum; [returtyp]) ger veckodagen som ett tal. Returtypen avgör vad talen betyder, och standardvärdet är amerikanskt – veckan börjar på söndag.
| Returtyp | Ger |
|---|---|
1 eller utelämnad | 1 = söndag … 7 = lördag |
2 | 1 = måndag … 7 = söndag |
3 | 0 = måndag … 6 = söndag |
// A1 = 2026-07-01, en onsdag
=VECKODAG(A1; 2) // => 3
Använd 2 när du vill ha svenska veckodagsnummer, och 3 när du vill räkna: A1-VECKODAG(A1;3) ger måndagen i samma vecka.
ISOVECKONR (ISOWEEKNUM)
ISOVECKONR(datum) ger veckonumret enligt ISO 8601, som är det Sverige använder: veckan börjar på måndag, och vecka 1 är den vecka som innehåller årets första torsdag.
// A1 = 2027-01-01, en fredag
=ISOVECKONR(A1) // => 53
Det finns också VECKONR (WEEKNUM), men VECKONR(datum; 2) ger inte svenska veckonummer trots att veckan då börjar på måndag. Med returtyp 2 är vecka 1 alltid den vecka som innehåller den 1 januari, vilket ger fel svar de år som januari inleds sent i veckan – exemplet ovan blir 1 i stället för 53. Vill du ändå använda VECKONR är 21 den enda returtyp som följer ISO:
=VECKONR(A1; 21) // => 53, samma som ISOVECKONR
SLUTMÅNAD (EOMONTH)
SLUTMÅNAD(startdatum; månader) ger sista dagen i månaden, förskjutet med angivet antal månader.
// A1 = 2026-07-01
=SLUTMÅNAD(A1; 0) // => 2026-07-31
=SLUTMÅNAD(A1; 2) // => 2026-09-30
=SLUTMÅNAD(A1; -2) // => 2026-05-31
Månadens första dag får du med =SLUTMÅNAD(A1;-1)+1.
Formatera med TEXT
TEXT(värde; format) gör om ett datum till text i valfritt format.
// A1 = 2026-07-01
=TEXT(A1; "ÅÅÅÅ-MM-DD") // => 2026-07-01
=TEXT(A1; "D MMMM ÅÅÅÅ") // => 1 juli 2026
=TEXT(A1; "DDDD") // => onsdag
Formatkoderna följer Excels språk: Å för år, M för månad, D för dag i svenska Excel, Y/M/D i engelska. En arbetsbok som ska öppnas av båda bör därför formatera cellen i stället för att göra om datumet till text – resultatet av TEXT är text och går inte längre att räkna med.
Skillnad mellan datum
Antal dagar
Subtraktion räcker, och ger ett negativt tal när ordningen är omvänd.
// A1 = 2026-07-01
// A2 = 2026-07-15
=A2-A1 // => 14
=A1-A2 // => -14
DAGAR(slutdatum; startdatum) (DAYS) gör samma sak med namngivna argument. Observera ordningen – slutdatumet först.
=DAGAR(A2; A1) // => 14
Att skillnaden mellan den 1 och den 15 är 14 och inte 15 är väntat: subtraktionen räknar mellanrummen, inte dagarna. Vill du räkna båda ändpunkterna lägger du till 1.
År, månader och dagar med DATEDIF
DATEDIF(startdatum; slutdatum; enhet) räknar skillnaden i hela år, månader eller dagar.
=DATEDIF(A1; A2; "Y") // Hela år
=DATEDIF(A1; A2; "M") // Hela månader
=DATEDIF(A1; A2; "D") // Dagar
=DATEDIF(A1; A2; "YM") // Månader utöver hela år
=DATEDIF(A1; A2; "YD") // Dagar utöver hela år
Tre saker är värda att veta om den:
- Namnet översätts inte. Den heter
DATEDIFäven i svenska Excel, och den föreslås inte medan du skriver – du får skriva ut hela namnet själv. - Startdatumet måste ligga före slutdatumet. Annars blir svaret
#OGILTIGT!. Vet du inte vilket som är störst kan du vända på dem och sätta tecknet själv:
=DATEDIF(MIN(A1; A2); MAX(A1; A2); "D") * OM(A1 > A2; -1; 1)
- Enheten
"MD"avråder Microsoft själva från. Den ska ge dagarna utöver hela månader men kan ge noll eller ett negativt tal. Behöver du “3 år, 2 månader och 5 dagar” är det säkrare att räkna sista ledet som en subtraktion:
// Dagar utöver hela år och månader, utan "MD"
=A2 - EDATUM(A1; DATEDIF(A1; A2; "Y")*12 + DATEDIF(A1; A2; "YM"))
Andel av ett år med ÅRDEL
ÅRDEL(startdatum; slutdatum; [bas]) (YEARFRAC) ger skillnaden som ett decimaltal av ett år. Bas 1 räknar med verkliga dagar och verkliga år, alltså även skottdagar.
=ÅRDEL(A1; A2; 1) // => 0,0384…
Lägg till eller dra ifrån
Dagar och veckor
Addition och subtraktion räcker.
// A1 = 2026-07-01
=A1 + 14 // => 2026-07-15
=A1 - 14 // => 2026-06-17
=A1 + 3*7 // Tre veckor fram
Månader och år med EDATUM (EDATE)
EDATUM(startdatum; månader) lägger till eller drar ifrån hela månader, och landar på samma dag i månaden.
// A1 = 2026-07-01
=EDATUM(A1; 3) // => 2026-10-01
=EDATUM(A1; -3) // => 2026-04-01
=EDATUM(A1; 12) // Ett år fram
Finns ingen motsvarande dag i målmånaden justeras svaret till månadens sista dag: en månad efter den 31 januari är den 28 februari.
Arbetsdagar och helgdagar
Excel känner till lördagar och söndagar, men inte svenska helgdagar. De måste du mata in själv, som ett cellområde med datum. Lägg dem i en egen kolumn, gärna på ett eget blad, och ge området ett namn under Formler › Namnhanteraren – då kan formlerna säga Helgdagar i stället för Blad2!$A$1:$A$20.
Ta med både röda dagar och de dagar din arbetsplats faktiskt är stängd. Julafton, midsommarafton och nyårsafton är inte röda dagar men är lediga hos de flesta, och Excel har ingen åsikt om vilka datum du lägger i listan.
NETTOARBETSDAGAR (NETWORKDAYS)
NETTOARBETSDAGAR(startdatum; slutdatum; [lediga]) räknar arbetsdagarna från och med startdatumet till och med slutdatumet. Båda ändpunkterna räknas med, till skillnad från subtraktion.
=NETTOARBETSDAGAR(A1; A2) // Utan helgdagar
=NETTOARBETSDAGAR(A1; A2; Helgdagar) // Hoppar även över helgdagarna
ARBETSDAG (WORKDAY)
ARBETSDAG(startdatum; dagar; [lediga]) ger datumet ett visst antal arbetsdagar fram eller tillbaka. Startdatumet räknas inte som en av dagarna.
=ARBETSDAG(A1; 10; Helgdagar) // Tio arbetsdagar fram
=ARBETSDAG(A1; -10; Helgdagar) // Tio arbetsdagar tillbaka
=ARBETSDAG(A1; 1; Helgdagar) // Nästa arbetsdag
När helgen inte är lördag och söndag
NETTOARBETSDAGAR.INT och ARBETSDAG.INT (NETWORKDAYS.INTL, WORKDAY.INTL) tar ett extra argument som säger vilka veckodagar som är lediga. Det är det du behöver för skiftarbete, butik eller vård.
=NETTOARBETSDAGAR.INT(A1; A2; helg; Helgdagar)
=ARBETSDAG.INT(A1; dagar; helg; Helgdagar)
Argumentet helg anges antingen som ett tal eller som en sträng med sju tecken, ett per veckodag med start på måndag, där 1 betyder ledig:
helg | Lediga dagar |
|---|---|
1 eller utelämnad | Lördag och söndag |
11 | Bara söndag |
17 | Bara lördag |
"0000011" | Lördag och söndag |
"0000001" | Bara söndag |
"0001010" | Torsdag och lördag |
// Arbetsdagar när bara söndagen är ledig
=NETTOARBETSDAGAR.INT(A1; A2; 11; Helgdagar)
Vanliga beräkningar
Ålder i hela år
=DATEDIF(A1; IDAG(); "Y")
Vilket kvartal ett datum ligger i
=AVRUNDA.UPPÅT(MÅNAD(A1)/3; 0) // => 1–4
Måndagen i samma vecka
=A1 - VECKODAG(A1; 3)
Sista arbetsdagen i månaden
=ARBETSDAG(SLUTMÅNAD(A1; 0) + 1; -1; Helgdagar)
Antal helgdagar som infaller på en vardag i perioden
Skillnaden mellan arbetsdagarna med och utan helgdagslistan är precis de helgdagar som annars hade varit arbetsdagar.
=NETTOARBETSDAGAR(A1; A2) - NETTOARBETSDAGAR(A1; A2; Helgdagar)
En serie datum
SEKVENS(rader; [kolumner]; [start]; [steg]) (SEQUENCE) fyller ett område. Formeln skrivs i en cell och svaret sprider sig nedåt.
=SEKVENS(30; 1; A1; 1) // 30 dagar från och med A1
=SEKVENS(12; 1; A1; 7) // Var sjunde dag, tolv gånger
Månadsvis behöver EDATUM, eftersom månader inte har lika många dagar:
=EDATUM(A1; SEKVENS(12; 1; 0; 1)) // Samma datum i tolv månader
Färga helger och helgdagar
Markera datumkolumnen och lägg till en regel under Start › Villkorsstyrd formatering › Ny regel › Bestäm vilka celler som ska formateras med en formel. Låt raden vara relativ och kolumnen absolut:
=VECKODAG($A1; 2) > 5 // Lördag och söndag
=ANTAL.OM(Helgdagar; $A1) > 0 // Datum som finns i helgdagslistan
Vill du hellre slippa formlerna?
Kalkylatorn här på sajten räknar skillnaden mellan två datum, och framåt eller bakåt i arbetsdagar, med svenska helgdagar inbakade. Ska datumen in i ett system i stället för i ett kalkylblad finns API:t.
Räkna dagar och arbetsdagar Helgdagarna som JSON