Sari la conținut

Calculeaza diferenta dintre 2 date in Excel

  • Excel

Cum calculam cate zile calendaristice sunt intre 2 date in Excel? Dar daca vorbim despre zile lucratoare? O intrebare clara (2 de fapt) care merita un raspuns, cel putin la fel de clar si concis, vezi video-ul de mai jos. 

Diferenta intre 2 date in Excel

Zile calendaristice

Daca am nevoie sa vad cate zile calendaristice sunt intre 2 date, tot ce trebuie sa fac este sa fac o diferenta intre ele. Excel-ul imi va da ca si rezultat numarul de zile. Daca tu nu lucrezi cu date, ci cu DATETIME (unde avem pe langa data si ora), cel mai probabil ca vei primi rezultate si cu virgula. 

Zile lucratoare

Daca vrem sa vedem cate zile lucratoare avem, vom avea nevoie de functia NETWORKDAYS. Nu te gandi la relelistica, numele vine de la NET WORK DAYS, adica zile de lucru pe bune, tradus intr-un mod cel putin dubios. 

=NETWORKDAYS(start_date, end date, [holidays])

Cred ca e suficient de clar ce punem la start si end date. La holidays putem selecta una sau mai multe celule care contin zile libere, ca sa stie sa treaca peste ele. Nu prea are cum Excel-ul sa stie ca 1 Decembrie e zi libera nationala la voi, ii putem noi insa spune.

Alte functii care lucreaza cu date

Aici poti vedea si alte functii care lucreaza cu date in Excel. NETWORKDAYS e doar una dintre ele. Cred ca si WEEKNUM, WEEKDAY + altele sunt de asemenea utile. 

Ai o intrebare?

Daca ai ajuns pana aici cautand sectiunea de comentarii, sa stii ca aceasta nu exista :). Poti insa ca sa ne pui intrebari in partea de forum a site-ului, te asteptam acolo.

8 comentarii la „Calculeaza 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. Mersi Andrei

      Imi pare rau ca ai avut probleme cu sistemul de comentarii, ma surprinde asta, e cel mai folosit sistem atat in Romania cat si in afara.

      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

  2. DATEDIF este o functie ascunsa si exista in MS Excel 2013. Nu o sa-ti apara cand o tastezi dar este acolo

    1. Buna Alexandra, minimul si maximul il calculam folosind functiile MIN() si MAX(); din moment ce minimul e unul singur, nu vei putea sa calculezi numarul de minimuri

Comentariile sunt închise.