Avståndet mellan två datum med DATEDIF



I Excel är det enkelt att räkna avståndet mellan två datum om man vill ha svaret i antal dagar. Det är ju bara att ta det större datumet minus det mindre och se till att det formateras som ett tal. Men problem uppstår om man vill räkna ut antal månader eller år mellan datum. Man måste ha en funktion som fungerar över årsskiften och klarar av att hantera att månader kan vara 28, 29, 30 eller 31 dagar långa.. Antag t.ex. att du vill räkna ut hur många år eller månader det är mellan 2009-11-10 och 2010-01-16.

I visan om okända djur sjunger Olle Adolphson att ”många syns inte men finns ändå”. DATEDIF är Excels motsvarighet, en okänd formel som finns utan att synas! Rullar du bland Excels funktioner för datum och tid så ser du inte funktionen, men den går ändå att använda. Bakgrunden är att det är en funktion som fanns i kalkylprogrammet Lotus 1-2-3 och lades in i Excel för att underlätta konvertering av filer från Lotus till Excel. Av någon anledning har Microsoft valt att inte inkludera den som en officiell funktion.

DATEDIF heter samma sak oavsett språversion.

DATEDIF visar skillnaden i år, månader och dagar mellan två datum på ett antal olika sätt.

Syntax: =DATEDIF(Datum1; Datum2;Intervall)

Där:

  • Datum1 är det tidigare datumet.
  • Datum2 är det senare datumet.

Intervall är en kod som anger på vilket sätt avståndet skall mätas.

Det finns sex olika intervallkoder. Intervallkoderna skall skrivas in med citattecken som de listas nedan. Inom parantes efter varje kod nedan ser du resultatet av DATEIF för respektive kod, om Datum1 är 2004-11-29 och Datum2 är 2011-01-30).

  • ”y” Antal hela år mellan två datum (6 hela år).
  • ”m” Antal hela månader mellan två datum (74 hela månader).
  •  ”d” Antal dagar mellan två datum (2253 dagar).
  • ”yd” Antal direkta dagar mellan två datum, år ignoreras (62 dagar – från 10:e november till 16:e januari).
  • ”md” Antal direkta dagar, år och månader ignoreras (1 dag – från den 29:e till den 30:e).
  • ”ym” Antal direkta månader, år och dagar ignoreras (2 månader– från november till januari)

Notera att alla intervallkoder skall omges av av raka dubbla citationstecken ”, inte av så kallade typografiska (sneda) citationstecken ” (om du ser skillnaden… WordPress typsnitt funkar inte riktigt…). Kolla annars i min exempelarbetsbok (se nedan) hur det skall se ut.

 

DATEDIF
Exempel på hur funktionen DATEDIF kan användas för att räkna ut differensen (i år, månader eller dagar) mellan två datum

 

 Ett inte ovanligt problem som kan uppstå när du använder DATEDIF är att du får felmeddelandet #NAMN? (eller #NAME?).
#NAMN?  inträffar när Excel inte känner igen texten i en formel. Det kan vara att man stavat fel, t.ex. skrivit DATEDIFF, eller skrivit fel argument.
Den vanligaste orsaken är dock att du skrivit fel för argumentet intervall.
Intervallet (Y, m, d, yd, md eller ym) skall i funktionen omges av raka dubbla citationstecken ”, inte av så kallade typografiska (sneda) citationstecken ” (om du ser skillnaden….).

Dvs, ”y” är korrekt, men ”y” kommer resultera i #NAMN?-fel. (tyvärr inte så tydligt med detta typsnitt)
Detta kan ibland bli problem då många office ibland automatjusterar från raka till sneda citationstecken när du skriver in dem, men copy/paste från mina exempel skall fungera.
Intervall är en referens som refererar till en cell med någon av koderna y, m, d, yd, md eller ym så skall dessa inte ha några citationstecken, det räcker med andra ord att bara skriva y en cell. Om du referar till en cell som innehåller ”y”  (dvs med citationstecken runt y) så kommer du få felvärdet #OGILTIGT!

En följfråga dök upp:

”Jag har en kolumn med personnummer ÅÅÅÅMMDD-XXXX samt en kolumn med datum ÅÅÅÅ-MM-DD vill veta hur gamla personerna i första kolumnen är (i antal år med en decimal) vid tidpunkten i andra kolumnen… ”

Detta kan också lösas med DATEDIF, men är lite krångligare än vad man kan tro.

Steg 1 är att texten ÅÅÅÅMMDD-XXXX måste bli ett datum. Det kan man göra med hjälp av funktionerna, DATUM, HÖGER och EXTEXT, anta att texten ligger i cell A1, då blir det:

=DATUM(VÄNSTER(A1;4);EXTEXT(A1;5;2);EXTEXT(A1;7;2))

Steg 2 blir att räkna ut antal år och månader mellan detta datum och aktuellt datum. I det följande antar jag att födelsedatumet ligger i cell A1 och aktuellt datum i cel B1.

Ett problem här är om du med en decimal menar 1/12-delar av ett år eller månad. En person som är 1 år och sex månader gammal är 1,5 år gammal (sex månader är ett halvt år). En månad är 1/12-dels år.
Vill man ha decimaltalet fungerar =DATEDIF(A1;B1;”m”)/12 – där A1 är födelsedatum och B1 är aktuellt datum.

Vill man istället ha år och månad så får man kombinera DATEDIF (hela år, ”y”) med DATEDIF (direkta månader, ”md”), t.ex.:

=DATEDIF(A1;B1;”Y”)&”,”&DATEDIF(A1;B1;”YM”)

Eller om du vill ha det lite snitsigare med text år och månad:

=DATEDIF(A1;B1;”Y”)&” År, ”&DATEDIF(A1;B1;”YM”)&” Månader”

Jag har lagt till dessa exempel i min övningsfil (se nedan), där finns hela steget från ÅÅÅÅMMDD-XXXX till antal år och månader.

exempelsidan hittar har du arbetsboken 003_DATEDIF som visar detta exempel

Bookmark and Share

13 comments

  • Hej Anders!

    Tack för en underbar site för Excelnördar.
    Jag följde ditt Tips (33) med funktionen =DATEDIF för att räkan ut ålder med hjölp av födelsetal.
    Kopierade ditt ex. =DATEDIF(E5;IDAG();”y”) där nu mitt personnummer i formen: 1947-09-19
    ligger i Cell E5. Men jag får bara svaret #NAME? i målcellen.
    har jag glömt aktivera något i Excel? Jag försöker följa felet med hjälpfunktioen men ser bara en massa obegripliga summor.
    Har du något tips?

    MVH
    Bosse

    • Tack beröm och tack för frågan,
      #NAMN? Uppstår på grund av att du angivit intervallet (Y, m, d, yd, md eller ym) med typografiska (sneda) citationstecken ” och inte med raka dubbla citationstecken ”.
      Du kan läsa mer om detta i mitt blogginlägg om funktionen DATEDIF:
      http://andersexcel.se/avstandet-mellan-tva-datum-med-datedif/
      Där har du också en länk till en arbetsbok som du kan ladda ner där jag visar hur det fungerar (nu också uppdatarad med en förklaring till det fel som du råkade ut för. Det visade sig nämligen att när jag skrev min text m funktionen så automatjusterade Word mina raka citationstecken till sneda, men tack vara din fråga så har jag nu kunnat justera detta…

  • Hej Anders,
    Jag har försökt använda beräkningen av ”Avståndet mellan två datum med DATEDIF” enligt din beskrivning men får det inte att fungera på min MAC. Med ditt exempel fungerar det, men inte med skillnaden mellan årtalen 1841-07-29 och 1894-01-30. Prästen har räknat ut att det ska resultera i 52 år, 5, månader och 14 dagar. Jag bifogar excel-blad med mina beräkningar. Vad har jag gjort för fel?
    Mvh
    Kjell

    • Hej, En begräsning med datumberäkningarna är att Excel inte klarar av att räkna på datum före 1900-01-01 (1904-01-02 om du har Macintosh) – vilket i Excel är tidsseriekod 1.
      Då DATEDIF använder tidsseriekoden så antar jag att den inte kan användas för att räkna ut datum före 1900-01-01 (1904-01-02 om du har Macintosh).
      DATEDIF är dessutom en specialfunktion som Microsoft officiellt inte supportar, därför är det knappast något som de försöker lösa.
      Om du i Excel skriver in 1904-01-02 i en cell och i en annan cell =1+detta datum så får du resultatet 1904-01-03.
      Skriver du däremot in 1804-01-02 och gör samma beräkning så får du resultatet #VÄRDEFEL!
      Det finns sätt att komma runt detta, men det kräver lite tricks. Jag har inte skrivit något om detta men du hittar ett förslag här: http://www.exceluser.com/explore/earlydates.htm

  • hej anders, mycket bra hemsida, har använt många av dina tips. En sak jag inte kan hitta dock(kanske är blind) är en funktion där man kan lägga in datum med ett värde till en kolumn med datum över ett år. låt oss säga att jag har värden för 10 datum under januari och vill då göra ett digram där det andra datumen som jag inte har i min lista får värdet noll. hur kan jag få in dem datumen i min lista över januatri på ett enkelt sätt. När det gäller en månmad kan man ju bara flytta in och ersätta datumen men nu ska jag göra ett digram för värden som gäller ca 10 år.

    förstår du vad jag menar?

    • Om jag förstår rätt: Du har ett diagram med datum på den vågräta axeln och vill att alla datum som inte har ett datum får ett nollvärde? Om du formaterar axel (högerklickar på axeln och väljer formatera) så kan du ställa in skalan på ett fast intervall och ange delenhet (t.ex. dagar). Då kommer alla datum utan värde få ett nollvärde i diagrammet.
      /Anders

  • Hej Anders!
    Tack för en mycket bra hemsida! Jag undrar om följande är möjligt och hur jag ska göra:
    Har en kolumn med personnummer ÅÅÅÅMMDD-XXXX samt en kolumn med datum ÅÅÅÅ-MM-DD vill veta hur gamla personerna i första kolumnen är (i antal år med en decimal) vid tidpunkten i andra kolumnen…
    Jättetacksam för hjälp!
    Med vänliga hälsningar från Caroline

  • Lars Håkansson

    Hej!
    Jag försöker förtvivlat med att räkna ut åldern på ett antal personer, där personnummret är formaterat enligt:
    ååmmdd-1234 och detta finns inskrivet i cell L3.
    Åldern vill jag ha i cell M3.
    Men jag får det inte att funka! Trots att jag använder raka cittattecken…
    Hur skall jag exakt skriva i Cell M3, för att få detta att funka?
    /Lars

    • Hej, kolla min exempelarbetsbok som jag länkar till i blogposten, där har du exempel påd hur du kan skriva. Men denna fungerar för mig: =DATEDIF(DATUM(VÄNSTER(L3;4);EXTEXT(L3;5;2);EXTEXT(L3;7;2));IDAG();”y”)
      /Anders

      • Lars Håkansson

        Tack för svaret Anders! Tyvärr funkar det fortfarande inte!
        Jag är nu övertygad om att det handlar om de raka cittattecknen! Jag har stängt av autokorrigeringen på alla nivåer i Excel 2010, men fortfarande formelfel! Fungerar inte med att klippa och klistra in formeln exakt som du skrivit den heller.
        Vilket ACSII-tecken är det som du använder? /Hälsningar Lars

  • Lars Håkansson

    Tack!!!

    //Lars