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.
Radu este fondatorul onLearn si autorul majoritatii articolelor de pe acest site. Cand nu scrie sau nu inregistreaza vreun tutorial e in sala de curs sau lucreaza pe proiecte de consultanta ca sa invete lucruri noi.
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.
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
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.
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
DATEDIF este o functie ascunsa si exista in MS Excel 2013. Nu o sa-ti apara cand o tastezi dar este acolo
E bine ca invat si eu tot timpul lucruri noi 🙂
e bine de stiut si asta https://support.microsoft.com/en-us/kb/214134
Buna. Cum calculam numarul de minimuri si maximuri in Excel?
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.