Dữ liệu sản lượng của mỗi nhân viên vào các ngày trong tuần. Bạn cần:
- Trích xuất top 3 sản lượng cao nhất, cùng với tên nhân viên và ngày.
- Kết quả được sắp xếp theo sản lượng giảm dần.
- Tên nhân viên được sắp xếp A-Z.
Link: Onedrive
![]() |
| Top 3 sản lượng cao nhất cùng với nhân viên và ngày đạt |
Công thức:
1.=LET(a,B2:H13,b,TOCOL(a),SORT(GROUPBY(HSTACK(TOCOL(IFS(a,A2:A13)),TOCOL(IFS(a,B1:H1))),b,SUM,,0,,b>LARGE(UNIQUE(b),4),1),3,-1))
2.=LET(L,TOCOL,a,B2:H13,b,L(a),SORT(FILTER(HSTACK(L(IFS(a,A2:A13)),L(IFS(a,B1:H1)),b),b>LARGE(UNIQUE(b),4)),{3,1},{-1,1}))
3.=LET(m,B2:H13,f,LAMBDA(x,TOCOL(IFS(m>LARGE(UNIQUE(TOCOL(m)),4),x),2)),SORT(HSTACK(f(A2:A12),f(B1:H1),f(m)),{3;1},{-1;1}))
4.=LET(a,TOCOL(A2:A13&"-"&B1:H1),b,HSTACK(TEXTBEFORE(a,"-"),--TEXTAFTER(a,"-")), c, TOCOL(B2:H13), SORT(FILTER(HSTACK(b,c), c>LARGE(UNIQUE(c),4)),{3,1},{-1,1}))
5.Python
df = (xl("A1:H13", 1).melt("Tên",var_name="Date",value_name="Qty").sort_values(["Qty", "Tên"],ascending=[0,1])).reset_index(drop=True)
df[df["Qty"] >= sorted(df["Qty"].unique(),reverse=True)[2]]
