如何返回Excel列中出现频率第二高的文本?
返回某列中出现频率第二高的文本方法
已知你可以用公式 =INDEX(A2:A60;MODE(MATCH(A2:A60;A2:A60;0))) 获取A2:A60区域内出现频率最高的文本,以下是获取第二高频文本的实用方法:
适用于Excel 365/2021(支持动态数组)
直接用动态数组函数组合,公式简洁无需按组合键:
=INDEX(SORTBY(UNIQUE(A2:A60),COUNTIF(A2:A60,UNIQUE(A2:A60)),-1),2)
- 逻辑拆解:
UNIQUE(A2:A60):提取区域内所有不重复的文本值COUNTIF(A2:A60,UNIQUE(A2:A60)):统计每个不重复值的出现次数SORTBY(..., -1):按出现次数从高到低排序不重复值INDEX(...,2):取排序后的第2个值,即第二高频文本
适用于旧版Excel(不支持动态数组)
需使用数组公式(输入完成后按 Ctrl+Shift+Enter 生效):
=INDEX(A2:A60,MODE(IF(COUNTIF(A2:A60,A2:A60)<>MAX(COUNTIF(A2:A60,A2:A60)),MATCH(A2:A60,A2:A60,0))))
- 逻辑拆解:
MAX(COUNTIF(A2:A60,A2:A60)):计算区域内文本的最高出现频率IF(...):筛选出出现频率不等于最高值的所有文本对应的位置MODE(MATCH(...)):找到筛选后文本中出现频率最高的位置(即第二高频文本的位置)INDEX(...):根据位置返回对应的文本
注意事项
- 如果有多个文本并列第二高,上述公式会返回区域中第一个出现的并列值
- 请根据实际数据范围调整公式中的
A2:A60区域,避免包含无关空值
内容的提问来源于stack exchange,提问作者Jrayman
相关产品推荐
相关产品推荐

