我有以下清单
乔恩
詹姆斯
彼得
莉兹
萨布丽娜
詹姆斯
玛丽亚
乔恩
莉兹
莉兹
莎拉
...
然后我想要一个列表来显示每个名称出现的次数。然后它应该给我每个名字的排名,如果排名有联系,我想按字母顺序重新编号。
所以列表应该如下所示:
(A) 姓名 | (B) 多久一次 | (C) 排名 # |
---|---|---|
乔恩 | 2 | 3 |
詹姆斯 | 2 | 2 |
彼得 | 1 | 5 |
莉兹 | 3 | 1 |
萨布丽娜 | 1 | 6 |
玛丽亚 | 1 | 4 |
莎拉 | 1 | 7 |
然后在一个单独的列表中,我只想显示前 5 个,按排名排序。
当我从 B 列对它们进行排名时,我总是会得到重复的排名,例如
=ARRAYFORMULA(IF(B2:B<>""; RANK(B2:B; B2:B; 0); ""))
根据我的下面的屏幕截图,您可以使用以下公式-
=XMATCH(C2,SORT($C$2:$C$8,1,FALSE))+COUNTIFS($C$2:C2,C2)-1
=RANK(C2,$C$2:$C$8,0)+(SUM(INDEX(--($C$2:C2=C2))))-1
或者单元格中的所有公式都在
G2
中。根据需要调整公式。
=LET(x,QUERY(A2:A,"select A, count(A) where A is not null group by A label count(A) ''"),
y,CHOOSECOLS(x,2),
z,MAP(y,SEQUENCE(ROWS(y)),LAMBDA(r,rw,RANK(r,y,0)+(SUM(INDEX(--(QUERY(y,"limit " &rw)=r))))-1)),HSTACK(x,z))