统计列表姓名频次并按规则排名,解决重复排名问题
姓名频次排名解决方案(并列按字母重排+提取前5)
一、先统计姓名出现频次
假设原始姓名列表在A列(从A2开始),先生成去重姓名和对应频次:
- 在C2输入:
=UNIQUE(A2:A),得到去重后的姓名列表 - 在D2输入数组公式:
=ARRAYFORMULA(COUNTIF(A2:A, C2:C)),自动计算每个姓名的出现频次
二、解决并列排名重复问题
原RANK函数会给相同频次的姓名分配重复排名,要实现频次降序优先,频次相同则按姓名字母升序重新编号(无重复排名),在E2输入以下数组公式:
=ARRAYFORMULA(IF(C2:C="","",SUMPRODUCT(($D$2:$D>$D2)+($D$2:$D=$D2)*($C$2:$C<$C2))+1))
公式逻辑:
$D$2:$D>$D2:统计比当前姓名频次高的总数量($D$2:$D=$D2)*($C$2:$C<$C2):统计和当前频次相同,但姓名字母顺序更靠前的数量- 两者相加后加1,得到唯一的排名序号,完全避免重复
三、提取排名前5的结果
用FILTER函数直接筛选排名≤5的记录,在任意空白列(比如G2)输入:
=ARRAYFORMULA(IFERROR(FILTER(C2:E, E2:E<=5), "暂无前5数据"))
如果没有足够数据,会显示提示文本,否则自动列出前5名的姓名、频次和排名
内容的提问来源于stack exchange,提问作者Jana Kemmer
相关产品推荐
相关产品推荐

