Calcularea vechimii, folosind funcţia DATEDIF

Dacă este necesară o evidenţă (superficială – adică, fără a apela la tot felul de CRM-uri -, dar totuşi o evidenţă) pentru angajaţi, Excel-ul poate fi utilizat pentru calculul automat, folosind funcţia DATEDIF.

Obs: Deşi, pe site-ul Microsoft, este figurat că funcţia poate fi folosită de la Excel 2007, interesant este că nu se regăseşte în asistentul de funcţii (wizard) al Excel-ului; deci, din acest punct de vedere, suntem, cum s-ar spune, „pe cont propriu”.

Sintaxa funcţiei DATEDIF este: =DATEDIF(start_date,end_date,unit)

Dacă primele două argumente sunt mai mult decât clare (data de început, respectiv de finalizare a perioadei), ultimul argument – unit – se referă la tipul de informaţii care se doreşte a fi calculat; pot fi diferinte unităţi:

  • Y – numărul de ani întregi ale perioadei;
  • M – numărul de luni întregi ale perioadei;
  • D – numărul de zile ale perioadei.

De asemenea, unit mai poate avea şi câteva derivaţii faţă de unităţile de sus:

  • MD – diferenţa de zile dintre cele două date, ignorându-se lunile şi anii acelor date;
  • YM – diferenţa de luni, dintre cele două date; zilele şi anii sunt ignorate;
  • YD – diferenţa de zile, dintre cele două date, cu ignorarea anilor.

Notă: Cei de la Microsoft recomandă evitarea utilizării unităţii MD, care poate furniza rezultate incorecte; explicaţia ar rezida, printre altele – din punctul meu de vedere -, din faptul că nu toate lunile au acelaşi număr de zile sau, cum este cazul lunii februarie, poate diferi, dacă e vorba de ani bisecţi.

Aşadar, în tabelul nostru:

  • în coloana F avem anii întregi (=DATEDIF(E4;NOW();"Y")), fiind ignorate restul lunilor întregi;
  • lunile întregi se regăsesc în coloana G (=DATEDIF(E4;NOW();"YM"));
  • restul de zile care nu constituie o lună întreagă sunt în coloana H (=DATEDIF(E4;NOW();"MD")).

Propunerea mea ar fi să ne raportăm la câte zile are o lună şi, apoi să facem o diferenţă cu ziua angajării. Astfel, formula din coloana I (zile, v.1) ar fi: =DAY(EOMONTH(E4;0))-DAY(E4)+1 (acest 1 din finalul formulei este necesar pentru a fi luată în calcul şi ziua respectivă, de la care se porneşte numărarea). Singura remarcă ar fi pentru datele de 1 ale lunii, când formula pe care o recomand ar arăta numărul maxim de zile al acelei luni; de exemplu, azi fiind 1 mai 2020, având un avea angajat chiar azi, mi-ar reda 31 (numărul de zile al lunii mai) şi nu 0. Astfel, am făcut această ajustare, cu ajutorul funcţiei IF, în coloana J (zile, v.2) – fiind, din punctul meu de vedere, varianta cea mai bună (am şi colorat fundalul ei cu verde):

=IF(DAY(EOMONTH(E4;0))-DAY(E4)+1=DAY(EOMONTH(E4;0));0;DAY(EOMONTH(E4;0))-DAY(E4)+1)

La linkul de pe site-ul Microsoft (redat mai sus), propunerea este prin raportarea la prima zi a lunii, rezultând rezultatele din coloana K (zile, v.3), prin folosirea formulei: =E4-DATE(YEAR(E4);MONTH(E4);1)

Pentru a fi cât mai sugestive care din cele 3 variante se apropie de utilizarea simplă a funcţiei DateDiff cu unitatea „MD”, am comparat rezultatul acestor coloane cu coloana H, reflectând cu formatarea condiţionată valorile egale. Tot pentru o eventuală comparaţie, am adăugat şi ultima coloană, pentru a arăta câte zile au trecut de la data angajării şi până la cea de 1 mai 2020 (=DATEDIF(E4;NOW();"D")).

Ca să punctez puţin şi despre mai puţin cunoscuta funcţie EOMONTH (=EOMONTH(start_date, months)), pe care am folosit-o mai sus, afişează numărul serial pentru ultima zi din luna care este indicată de argumentul „months” înainte sau după „start_date”; este de la sine înţeles că, dacă argumentul „months” este o valoare pozitivă, va fi afişat pentru o dată viitoare, iar dacă este negativ, va afişa rezultatul pentru o dată trecută.

În condiţiile exemplului pe care l-am folosit am aflat numărul de zile maxim pe care-l are o lună, folosind valoarea 0 pentru argumentul „months” şi aplicând acestei formule funcţia Day, pentru a afla numărul ultimei zile a fiecărei luni (=DAY(EOMONTH(A2;0))), după cum se poate vedea şi-n această figură.

O variantă de calcul a vechimii, dar folosind MS Access şi VBA am redat în acest articol.

Author: Ovidiu.S

Suficient de pasionat de această zonă profesională ca, în cazul în care ştiu ceva - cât de puţin - să împărtăşesc cu alţii.

Lasă un răspuns