Liệt kê những nhân sự có mức lương cao top 2 mỗi bộ phận. Lưu ý nếu có trùng nhau sẽ lấy hết.
Link: Onedrive
![]() |
| Top 2 nhân sự lương cao mỗi bộ phận |
Công thức:
1.=LET(a,A1:A25,c,C1:C25,GROUPBY(a,B1:B25,ARRAYTOTEXT,3,0,,VLOOKUP(a,IFERROR(GROUPBY(a,c,LAMBDA(x,LARGE(x,2))),0),2,)<=c))
2.=GROUPBY(A1:A25,IFERROR(C1:C25-10^8&B1:B25,B1),LAMBDA(x,LET(s,-LEFT(x,7),ARRAYTOTEXT(FILTER(MID(x,10,99),s<=SMALL(s,MIN(ROWS(x),2)))))),3,0)
3.=LET(d,A2:A25,s,C2:C25,u,SORT(UNIQUE(d)),HSTACK(u,MAP(u,LAMBDA(v,LET(y,d=v,ARRAYTOTEXT(FILTER(B2:B25,y*(s>=LARGE(y*s,MIN(SUM(--y),2))))))))))
4.=LET(d,A2:A25,s,C2:C25,GROUPBY(d,B2:B25,ARRAYTOTEXT,,0,,s>=MAP(d,LAMBDA(x,LARGE(s*(d=x),2)))))
5.=LET(a,A2:A25,c,C2:C25,GROUPBY(a,B2:B25,ARRAYTOTEXT,,0,,COUNTIFS(a,a,c,">"&c)<2))
6.Python:
df = xl("A1:C25",True)
(df[df.groupby('Bộ phận')['Lương'].transform(lambda x: x>=x.nlargest(2).min())].groupby('Bộ phận')['Nhân sự'].apply(lambda i: ', '.join(i)).reset_index())
