Xác Định Thời Gian Máy Tính Sử Dụng

Xác định thời gian (tính bằng phút) của mỗi phiên sử dụng:

  • Một phiên sử dụng được xác định là từ lúc Login đến khi Logout.
  • Thời gian nằm giữa khoảng Lock và Unlock cũng sẽ không được tính và thời gian sử dụng.
  • Chèn thêm cột ID trước cột thời gian bắt đầu và kết thúc mỗi phiên (thể hiện số lần sử dụng từng người).
  • Thời gian sử dụng = Logout - Login - Thời gian máy nghỉ (Lock).

Link: Onedrive

Tính thời gian máy sử dụng

Công thức:
1. =LET(b,B2:B25,r,FILTER,SORT(DROP(REDUCE(0,UNIQUE(b),LAMBDA(a,v,VSTACK(a,DROP(GROUPBY(HSTACK(r(b,b=v),SCAN(0,r(C2:C25,b=v)=C2,SUM)),r(D2:D25,b=v),HSTACK(MIN,MAX,LAMBDA(a,1440*SUM(WRAPROWS(a,2)*{-1,1}))),,0),1)))),1),3))

2. =REDUCE(F1:J1,UNIQUE(B2:B25),LAMBDA(s,r,VSTACK(s,LET(a,FILTER(C2:D25,B2:B25=r),b,DROP(a,,1),IFNA(HSTACK(r,DROP(GROUPBY(SCAN(0,TAKE(a,,1)=C2,SUM),b,HSTACK(MIN,MAX,LAMBDA(s,1440*SUM(WRAPROWS(s,2)*{-1,1}))),,0),1)),r)))))

3.=LET(i,SORT(B2:D25),a,DROP(GROUPBY(HSTACK(SCAN(0,INDEX(i,,2)=C2,SUM),TAKE(i,,1)),DROP(i,,2),HSTACK(MIN,MAX,LAMBDA(a,1440*SUM(WRAPROWS(a,2)*{-1,1}))),,0,3),1,1),b,TAKE(a,,1),c,SEQUENCE(ROWS(a)),HSTACK(b,BYROW((b=TOROW(b))*(c>=TOROW(c)),SUM),DROP(a,,1)))

4. =LET(b,B2:B25,c,C2:C25,d,D2:D25,DROP(GROUPBY(IF({1,0},b,MAP(b,c,LAMBDA(x,y,COUNTIFS(B2:x,x,C2:y,C2)))),IF({1,1,0},d,(1-2*((c=C2)+(c=C6)))*d*1440),HSTACK(MIN,MAX,SUM),,0,3,,1),1))

5. =LET(I,INDEX,s,SORT(B2:D25),a,SWITCH(I(s,,2),"Login",-1,"Unlock",-1,1),b,SCAN(0,I(s,,2)="Login",SUM),n,b-XLOOKUP(I(s,,1),I(s,,1),b)+1,DROP(GROUPBY(HSTACK(I(s,,1),n),I(s,,3)*IF({1,1,0},1,a*1440),HSTACK(MIN,MAX,SUM),,0,3,,1),1))

6.=LET(i,B2:B25,j,C2:C25,k,D2:D25,h,HSTACK,SORT(DROP(GROUPBY(h(i,MAP(i,j,LAMBDA(x,y,COUNTIFS(B2:x,x,C2:y,"Login")))),h(k,k,IF(REGEXTEST(j,"(?:U|i)n"),-1,1)*k*1440),h(MIN,MAX,SUM),,0),1),3,))

7.Python (Xem file đính kèm)

Đăng nhận xét (0)
Mới hơn Cũ hơn