Home » Blog » Calcul diferenta dintre 2 date in Excel

Calcul diferenta dintre 2 date in Excel


diferenta dintre 2 date in excel

Am primit pe email urmatoarea intrebare, tot legata de date in Excel, vad ca sunteti interesati de subiectul asta:

Radu, cum calculez diferenta dintre 2 date in Excel cu zecimala? am incercat cu DATEDIF dar functia asta imi da ca si rezultat numere intregi

Apropo, vreau sa va multumesc celor care imi scrieti si care ma intrebati lucruri. Va multumesc si ca nu va suparati pe mine ca nu va raspund in 8 secunde. 🙂 Dureaza oleac, dar in cele din urma ajung sa raspund la cam toate intrebarile.

Radu focus

Asa, revin la intrebarea primita, vrem sa aflam numarul de luni dintre 2 date cu zecimala. Daca tot suntem aici, hai sa includem in intrebarea asta si cazul in care am vrea sa aflam numarul de ani sau saptamani.

Eu nu am auzit de DATEDIF

Recunosc ca nu am auzit de DATEDIF, ciudat e ca nici nu am gasit functia asta in Excel (folosesc versiunea 2013), asa ca voi aborda o solutie mai rudimentara dar eficienta.

Revenind

Mai tii minte ce se intampla atunci cand scazi 2 date in Excel? da-mi voie sa iti reamintesc, iti da ca si rezultat numarul de zile diferenta. Avand asta in vedere, calculul nostru va arata cam asa:

  • Numar de luni diferenta: (Data1-Data2)/30
  • Numarul de saptamani diferenta: (Data1-Data2)/7
  • Numarul de ani diferenta: (Data1-Data2)/365

Daca te gandesti putin e cam logic nu?

Dar Radu …

Stiu, sunt luni care au 29, 31 de zile, avem si ani bisecti. Nu e o solutie perfecta, e simpla si eficienta, hai sa fim seriosi, nu cred ca e sfarsitul lumii daca rezultatul e 3,35 sau 3,37.

Dar totusi, daca ai si o alta solutie, spune-ne si noua in sectiunea de comentarii de mai jos.


Ai invatat ceva nou?


8 comentarii la „Calcul diferenta dintre 2 date in Excel”

  1. Se poate face si cu zecimala exacta folosind VBA. Am facut acum repede un cod si se poate testa pe acest fisier: https://sites.google.com/site/fisieredownloadandrei/exercitiu%20cu%20luni%20%28diferenta%20exacta%20intre%20date%20cu%20zecimala%29.xlsm?attredirects=0&d=1

    Apropo, e jalnica modalitatea de logare pe site…

    Codul este urmatorul:

    by: andreilungu.blogspot.com

    Sub Macro1()

    Set ws = ActiveSheet

    lrow = ws.Range(„B1”).End(xlDown).Row

    ws.Range(„B2:F” & lrow).ClearContents

    data_start = ws.Range(„I1”)
    data_end = ws.Range(„I2”)

    an_start = Year(data_start)
    an_end = Year(data_end)

    luna_end = Month(ws.Range(„I2”))
    luna_start = Month(ws.Range(„I1”))

    r = 2

    For y = an_start To an_end

    For i = 1 To 12
    If i = luna_start And i luna_end And y = an_start Then
    ws.Range(„B” & r) = data_start
    ws.Range(„C” & r).Formula = „=EOMONTH(B” & r & „,0)”
    ws.Range(„D” & r).Formula = „=C” & r & „-B” & r & „+1”
    ws.Range(„E” & r).Formula = „=C” & r & „-DATE(YEAR(B” & r & „),MONTH(B” & r & „),1)+1”
    ws.Range(„F” & r).Formula = „=D” & r & „/E” & r
    r = r + 1
    ElseIf i = luna_end And i luna_start And y = an_end Then
    ws.Range(„B” & r) = DateSerial(y, i, 1)
    ws.Range(„C” & r) = data_end
    ws.Range(„D” & r).Formula = „=C” & r & „-B” & r & „+1”
    ws.Range(„E” & r).Formula = „=EOMONTH(B” & r & „,0)-B” & r & „+1”
    ws.Range(„F” & r).Formula = „=D” & r & „/E” & r
    r = r + 1
    Exit For
    ElseIf i = luna_start And i = luna_end And an_start = an_end Then
    ws.Range(„B” & r) = data_start
    ws.Range(„C” & r) = data_end
    ws.Range(„D” & r).Formula = „=C” & r & „-B” & r & „+1”
    ws.Range(„E” & r).Formula = „=EOMONTH(B” & r & „,0)-DATE(YEAR(B” & r & „),MONTH(B” & r & „),1)+1”
    ws.Range(„F” & r).Formula = „=D” & r & „/E” & r
    Exit For

    ElseIf i = luna_end And i = luna_start And y = an_end And an_end > an_start Then
    ws.Range(„B” & r) = DateSerial(y, i, 1)
    ws.Range(„C” & r) = data_end
    ws.Range(„D” & r).Formula = „=C” & r & „-B” & r & „+1”
    ws.Range(„E” & r).Formula = „=EOMONTH(B” & r & „,0)-B” & r & „+1”
    ws.Range(„F” & r).Formula = „=D” & r & „/E” & r
    r = r + 1
    Exit For

    Else
    ws.Range(„B” & r) = DateSerial(y, i, 1)
    ws.Range(„C” & r).Formula = „=EOMONTH(B” & r & „,0)”
    ws.Range(„D” & r).Formula = „=C” & r & „-B” & r & „+1”
    ws.Range(„E” & r).Formula = „=C” & r & „-DATE(YEAR(B” & r & „),MONTH(B” & r & „),1)+1”
    ws.Range(„F” & r).Formula = „=D” & r & „/E” & r
    r = r + 1
    End If

    nextm:
    Next i
    Next y

    new_lrow = ws.Range(„F1”).End(xlDown).Row

    ws.Columns(„E:E”).NumberFormat = „General”

    End Sub

      1. Am incercat prima data sa ma loghez cu facebook (desi nu prea e ok) si nu am reusit, imi cerea sa ma inregistrez si cand incercam dadea mesaj ca exista deja cont cu adresa respectiva (de yahoo). Dupa aceea m-am logat cu gmail

Tu ce parere ai?