Meniu
Excel HR: NETWORKDAYS concedii, calcul salarii grile XLOOKUP, COUNTIFS prezență, Tabel Pivot rapoarte

Excel pentru Resurse Umane: formule HR, calcul salarii și rapoarte automate

Departamentele HR gestionează volume mari de date repetitive: fișe angajați, calcul concedii, state de plată, rapoarte de prezență. Excel are funcții specifice pentru fiecare dintre aceste procese. Acest ghid prezintă formulele și structurile folosite efectiv de HR-iști, cu exemple concrete.

1. Calculul zilelor de concediu cu NETWORKDAYS

NETWORKDAYS calculează automat zilele lucrătoare dintr-un interval, excludând weekend-urile și sărbătorile legale. Este funcția standard pentru concedii și termene.

// Zile lucrătoare între două date (fără sărbători):
=NETWORKDAYS(DataStart, DataEnd)

// Cu excluderea sărbătorilor legale (lista în coloana H):
=NETWORKDAYS(B2, C2, $H$2:$H$20)

// Calcul zile concediu rămase:
=Drept_zile_CO - SUMIFS(tbl_CO[Zile_luate], tbl_CO[ID_Angajat], A2)

// Data de revenire din concediu (după N zile lucrătoare):
=WORKDAY(DataStart, NrZile, $H$2:$H$20)

// Verificare dacă o dată este zi lucrătoare:
=AND(WEEKDAY(A2,2)<=5, ISNA(MATCH(A2,$H$2:$H$20,0)))

2. Calcul salarii cu grile și sporuri

// Structura tabel salarizare (tbl_Salarii):
// Coloane: ID | Nume | SalarBrut | GradA | Vechime | Norma | ZileAbsente

// Calcul spor vechime (exemplu grile 0/5/10/15/20 de ani → 0/5/10/15/20%):
=SalarBrut * VLOOKUP(Vechime, tbl_GrileVechime, 2, TRUE) / 100

// Sau cu IFS (Excel 2019+):
=SalarBrut * IFS(
    Vechime < 5,  0,
    Vechime < 10, 0.05,
    Vechime < 15, 0.10,
    Vechime < 20, 0.15,
    TRUE,         0.20
)

// Calcul salariu net simplificat (România - CAS 25%, CASS 10%, Impozit 10%):
=SalarBrut * (1 - 0.25 - 0.10) * (1 - 0.10)

// Calcul pentru muncă parțială (normă redusă):
=SalarBrut * ([@Norma] / 8)

// Deducere absențe nemotivate:
=SalarBrut - (SalarBrut / ZileLucratoareLuna * ZileAbsente)

Tabel grile salarizare cu XLOOKUP

// XLOOKUP cu match exact sau mai mic — ideal pentru grile:
=XLOOKUP(Vechime, tbl_Grile[AniMin], tbl_Grile[Procent], 0, -1)
// Al 4-lea argument: 0 = valoare lipsă → 0
// Al 5-lea argument: -1 = caută valoarea egală sau mai mică

// Combinare salariu + spor + tichete - rețineri:
=SalarBrut
  + Spor_Vechime
  + IF(TicheteMasa="Da", NrZileLucrate*28.18, 0)
  - Avans
  - Popriri

3. Registrul de prezență cu COUNTIFS

// Structura tabel prezență (tbl_Prezenta):
// Coloane: Data | ID_Angajat | Tip (P=prezent, CO=concediu, M=medical, A=absent)

// Zile prezent pe angajat în luna curentă:
=COUNTIFS(
    tbl_Prezenta[ID_Angajat], A2,
    tbl_Prezenta[Tip], "P",
    tbl_Prezenta[Data], ">="&DATE(YEAR(TODAY()),MONTH(TODAY()),1),
    tbl_Prezenta[Data], "<="&TODAY()
)

// Zile concediu medical YTD:
=COUNTIFS(
    tbl_Prezenta[ID_Angajat], A2,
    tbl_Prezenta[Tip], "M",
    tbl_Prezenta[Data], ">="&DATE(YEAR(TODAY()),1,1)
)

// Procent prezență lunară:
=ZilePrezent / NETWORKDAYS(DATE(YEAR(TODAY()),MONTH(TODAY()),1), TODAY(), $H$2:$H$20)

4. Fișa angajatului cu XLOOKUP și INDEX/MATCH

// Tabel master angajați (tbl_Angajati):
// ID | Nume | Prenume | CNP | DataAngajare | Functie | Departament | Email

// Căutare completă după ID — returnează toate câmpurile:
=XLOOKUP(CautaID, tbl_Angajati[ID], tbl_Angajati[Nume], "Negăsit")

// Calcul vechime în ani:
=DATEDIF(DataAngajare, TODAY(), "Y") & " ani " &
 DATEDIF(DataAngajare, TODAY(), "YM") & " luni"

// Angajații cu aniversare contractului în luna curentă:
=FILTER(
    tbl_Angajati[Nume],
    MONTH(tbl_Angajati[DataAngajare]) = MONTH(TODAY())
)

// Trimitere email automat prin VBA (exemplu simplificat):
Sub TrimiteRemindere()
    Dim i As Long
    For i = 2 To tbl_Angajati.ListRows.Count + 1
        If Month(Cells(i, 6)) = Month(Date) And Day(Cells(i, 6)) = Day(Date) Then
            ' Trimite email prin Outlook
            Call TrimiteEmail(Cells(i, 8), "Aniversare contract", "...")
        End If
    Next i
End Sub

5. Tabel Pivot pentru rapoarte HR

Tabelele Pivot centralizează automat datele din registrele de prezență și salarizare, fără formule SUMIFS complexe.

// Creare Pivot din tabelul de prezență:
// Insert → PivotTable → From Table: tbl_Prezenta → New Sheet

// Configurare raport prezență lunară:
// Rows: Departament, Angajat
// Columns: Tip (P/CO/M/A)
// Values: Count of Data

// Filtrare pe lună cu Slicer (Insert → Slicer → Data)

// Raport costuri salariale pe departament:
// Rows: Departament
// Values: Sum of SalarBrut → Show Values As → % of Grand Total

// Actualizare automată la deschidere fișier (VBA):
Private Sub Workbook_Open()
    ActiveWorkbook.RefreshAll
End Sub

6. Import date din sistemul de pontaj

// Power Query — import CSV export din sistemul de pontaj:
// Data → Get Data → From File → From CSV

// Transformări tipice pentru date pontaj:
// 1. Split Column pe delimitator (Data + Ora din același câmp)
// 2. Change Type → Date, Time
// 3. Add Column → Custom → calcul ore lucrate:
   = Duration.Hours([OraIesire] - [OraIntrare])
// 4. Replace Values — standardizare tipuri absențe
// 5. Merge cu tbl_Angajati pe codul de angajat

// Validare ore suplimentare (>8h/zi):
= if [OreLucrate] > 8 then [OreLucrate] - 8 else 0

Consultanța specializată pentru sisteme HR în Excel, inclusiv integrare cu sisteme de salarizare, este disponibilă la Excel Group MD.

Lasă un răspuns

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