Tính Lương Nhân Viên Theo Giờ

Bạn có dữ liệu thời gian làm việc mỗi ngày của nhân viên, cùng lương theo giờ từng ngày. Bạn cần tính tổng lương cho mỗi nhân viên:

  • Giờ làm việc tiêu chuẩn là từ 09:00-17:00
  • Làm thêm ngoài giờ tiêu chuẩn sẽ được tính thêm 20%
  • Làm thêm cuối tuần (Thứ 7, Chủ nhật) sẽ được tính thêm 50% (không áp dụng làm ngoài giờ tiêu chuẩn)
  • Rate là cột lương theo giờ mỗi ngày (mức lương mỗi ngày là không giống nhau).
  • Tính tổng tiền phải thanh toán cho từng nhân viên.

Link: Onedrive

Tính tổng lương nhân viên

Công thức:
1.=GROUPBY(A2:A23,MAP(D2:D23,LAMBDA(s,LET(a,TEXTSPLIT(@+C23:s,"-",",")*24,b,SUM(a*{-1,1}),s*(b+IF(WEEKDAY(@+B23:s,2)>5,b/2,0.2*(MAX(a-17,)+MAX(9-a,))))))),SUM,,0)

2.=GROUPBY(A2:A23,MAP(B2:B23,C2:C23,D2:D23,LAMBDA(x,y,z,LET(a,TEXTSPLIT(y,"-",",")*24,b,TAKE(a,,1),c,DROP(a,,1),SUM(IF(WEEKDAY(x,2)<6,(IFS(b<9,(9-b),c>17,(c-17),1,0)*0.2),(c-b)*0.5),(c-b))*z))),SUM,,0)

3.=GROUPBY(A2:A23,24*D2:D23*MAP(B2:B23,C2:C23,LAMBDA(b,c,LET(v,--TEXTSPLIT(c,"-",","),i,MAX(v)-17/24,j,3/8-MIN(v),w,SUM(MMULT(v,{-1;1})),IF(WORKDAY(b-1,1)=b,w+i*(i>0)*0.2+j*(j>0)*0.2,w*1.5)))),SUM,,0)

4.=LET(d,IF(WEEKDAY(B2:B23,2)>5,1.5,1),c,MAP(C2:C23,d=1,LAMBDA(y,w,SUM(24*MAP(TEXTSPLIT(y,","),LAMBDA(z,LET(a,0.375,b,17/24,hs,--TEXTBEFORE(z,"-"),he,--TEXTAFTER(z,"-"),(MAX(0,a-hs) + MAX(0,he-b))*IF(w,1.2,1) + (IF(he>b,b,he) - IF(hs<a,a,hs)))))))),GROUPBY(A2:A23,d*c*D2:D23,SUM,,0))

5.Python (Xem trong file)
Đăng nhận xét (0)
Mới hơn Cũ hơn