Excel 2016获取最低三项计数对应名称(含重复值)的公式实现
解决Excel 2016中提取最小计数的唯一姓名问题
我之前处理过类似的场景,在没有SORT函数的Excel 2016里,要避开重复计数导致的重复姓名,核心思路是给重复的计数添加微小的唯一偏移量,让SMALL函数能区分开相同的数值,同时不改变原有的排序逻辑。
具体实现方法
1. 单个提取姓名
要分别提取第1、2、3个最小计数对应的姓名,用以下公式即可:
- 第一个最小姓名:
=INDEX($A$2:$A$11,MATCH(SMALL($B$2:$B$11+(ROW($B$2:$B$11)-ROW($B$2)+1)/10000,1),$B$2:$B$11+(ROW($B$2:$B$11)-ROW($B$2)+1)/10000,0)) - 第二个最小姓名:
=INDEX($A$2:$A$11,MATCH(SMALL($B$2:$B$11+(ROW($B$2:$B$11)-ROW($B$2)+1)/10000,2),$B$2:$B$11+(ROW($B$2:$B$11)-ROW($B$2)+1)/10000,0)) - 第三个最小姓名:
=INDEX($A$2:$A$11,MATCH(SMALL($B$2:$B$11+(ROW($B$2:$B$11)-ROW($B$2)+1)/10000,3),$B$2:$B$11+(ROW($B$2:$B$11)-ROW($B$2)+1)/10000,0))
公式核心原理
(ROW($B$2:$B$11)-ROW($B$2)+1)/10000 这部分是关键:
- 它给每一行的计数添加了一个从
0.0001开始的递增微小值(行号越靠后,偏移量越大) - 这个偏移量足够小,完全不会改变原计数的大小排序(比如原计数是5,加0.0001后还是远小于6)
- 但能让重复的计数变成唯一的数值,这样SMALL就能依次取到不同的“带偏移计数”,MATCH也能找到对应的唯一行,避免返回重复姓名。
2. 一步合并为目标格式
如果要直接得到类似Wiley, Ruby, Sara的合并结果,可以用Excel 2016支持的TEXTJOIN函数,一次性提取三个姓名并拼接:
=TEXTJOIN(", ",TRUE,INDEX($A$2:$A$11,MATCH(SMALL($B$2:$B$11+(ROW($B$2:$B$11)-ROW($B$2)+1)/10000,{1,2,3}),$B$2:$B$11+(ROW($B$2:$B$11)-ROW($B$2)+1)/10000,0)))
{1,2,3}是数组常量,让SMALL一次性提取前3个带偏移的最小数值TEXTJOIN(", ",TRUE,...)用逗号分隔结果,TRUE表示忽略空值
注意事项
- 如果你的计数列是小数,把偏移量的分母改大(比如
100000),确保偏移量小于原数据的最小间隔,避免影响排序 - 如果你想按重复计数的出现顺序提取,也可以把偏移量换成
COUNTIF($B$2:$B2,$B$2:$B11)/10000,这样相同计数的行按首次出现的顺序被选中
内容的提问来源于stack exchange,提问作者konewka
相关产品推荐
相关产品推荐

