Dato


Formler
Dato

Funktioner og formler til datoer

Datoformler er meget anvendt, men kombinationen af datoværdier, datoformler og datoformatering kan være svær at gennemskue i starten. Men det betaler sig at øve sig. Download filen herunder - så kan du begynde at øve dig om et par minutter.

xlEasy Formler Dato 902: Find alle datofunktioner samt mange eksempler på formler med dato og tid.

Dato som tal

Det er nemt at indsætte dags dato i en formel. Du skriver blot =NU(). Denne funktion afleverer datoværdien, f.eks. 42569,6528563657 for 18. juli 2016 kl. 15:40. Hvis celleformatet er Generelt vises tallet som en dato og klokkelset. Hvis formatet er sat til f.eks. Tal eller Tekst, vises tallet. Denne kombination af datoværdier, datofunktioner og datoformater er ikke altid helt nemme at gennemskue.

Nogle danskere har problemer med funktion IDAG(), i det deres stavekontrol som standard retter skrivefejlen
idag til i dag (læg mærke til mellemrummet).

Blandt eksemplerne er en fyldig gennemgang af problemerne med at beregne det rigtige ugenr. Andre eksempler: Find ud af, om et år er skudår. Find første og sidste dag i en måned. Hvor mange år, måneder og dage er der mellem din fødselsdag og i dag? Find antal arbejdsdage i en given måned.

Hvilken dato er mandag i uge 49, år 2013?

Husk at du skal bruge året for at finde den korrekte dato. Her er formlen:

=DATO($E6;1;0)+(D6*7)-6+HVIS(eWeek(DATO(E6;1;1))>=52;8-UGEDAG(DATO(E6;1;1);2);-UGEDAG(DATO(E6;1;1);2)+1)

Her er formlen farvekodet og skrevet på flere linjer. E6 er året (2013), D6 er ugen (49). Resultatet bliver 02-12-2013:

=DATO($E6;1;0)+(D6*7)-6+
HVIS(
  eWeek(DATO(E6;1;1))>=52;
    8-UGEDAG(DATO(E6;1;1);2);
    -UGEDAG(DATO(E6;1;1);2)+1
)

De anvendte Excel-funktioner er DATO, UGEDAG og HVIS samt en bruger-defineret uge-funktion (eWeek). Formlen fungerer sådan, hvor E6 vises som 'år' og D6 som 'ugenr':

1) Vi starter med dag 0 i året, d.v.s. 31-12 året før:

=DATO(år;1;0)

2) Læg 7 dage til for hver uge (ugenr * 7). Træk 6 dage fra for at få første dag i ugen.

+(ugenr*7)-6

Nu er vi sådan set færdig - hvis uge 1 altid faldt på samme tidspunkt. Vi er nødt til at korrigere for to ting: Hvor mange uger er der i året og i hvilken uge falder 1. januar:

3a) Årets første dag kan falde i uge 1, 52 eller 53. Hvis ugenr. for 1/1 er 52 eller 53:

HVIS(eWeek(DATO(år;1;1))>=52;

skal tillægges 1-7 dage fra uge 52/53. Dagene beregnes ud fra ugedagens nummer:

 8-UGEDAG(DATO(år;1;1);2);

3b) Hvis årets første ugenummer er 1 skal vi trække manglende dage fra:

 -UGEDAG(DATO(år;1;1);2)+1

Vi har fundet mandagen i ugen.  

Før Excel 2013: I formlen finder du funktionen eWeek(). Den har du ikke. Egentlig skulle man blot bruge Excel's UGE.NR(), men den regner desværre ikke rigtigt. Se mere i xlEasy_Formler_Dato.

Excel 2013+: Her kan du bruge funktionen =ISOUGE.NR(), der endelig understøtter europæisk ugeberegning.
 

Excel's UGE.NR() funktion regner for det meste rigtig - men ikke altid. Kunsten er at vide hvornår den gør hvad!

Funktionen eWeek beregner ugenummer rigtigt efter dansk, dvs. europæisk ISO standard. VBA-koden ser sådan ud:

Public Function eWeek(InDate As Date) As Long
' What   : Calculate correct ISO weekno
' From   : http://www.cpearson.com/excel/WeekNumbers.aspx
'-------------------------------
  eWeek = DatePart("ww", InDate, vbMonday, vbFirstFourDays)
End Function
Gå til toppen