Sari la conținut

Calculeaza diferenta dintre 2 date in Excel

  • Radu Popa 

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. 


.

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. 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

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *