无需数据透视表,统计Excel表格列中频数最高的前5个文本的公式怎么写
Excel单列前5高频文本统计方案(无需数据透视表)
适用Microsoft 365/Excel 2021及以上版本(动态数组方案)
这是最简方案,无需辅助列、无需下拉,单个公式即可返回结果:
- 单独返回前5个高频文本(每个值占一个单元格)
假设统计范围为A列A2:A100,任意空白单元格输入公式:=INDEX(SORTBY(UNIQUE(A2:A100),COUNTIF(A2:A100,UNIQUE(A2:A100)),-1),SEQUENCE(5)) - 直接拼接为完整字符串(符合示例中输出
bcdef的需求)=TEXTJOIN("",TRUE,INDEX(SORTBY(UNIQUE(A2:A100),COUNTIF(A2:A100,UNIQUE(A2:A100)),-1),SEQUENCE(5)))
公式说明
UNIQUE(A2:A100):自动提取目标列所有不重复文本COUNTIF(...):批量统计每个不重复文本的出现次数SORTBY(..., -1):按出现次数从高到低排序文本INDEX+SEQUENCE(5):提取排序后的前5项TEXTJOIN:将前5项拼接为无分隔符的完整字符串
和单独使用COUNTIF需要手动枚举所有不重复值的逻辑不同,该方案全程自动计算,不需要额外操作。
适用Excel 2019及更低版本(兼容方案)
不支持动态数组的旧版本需要用数组公式,操作步骤:
- 选中第一个要输出结果的单元格(如B2)
- 输入如下公式,输入完成后按
Ctrl+Shift+Enter三键触发数组计算生效 - 选中B2下拉填充到B6,即可得到前5个高频文本
=INDEX(A$2:A$100,MODE(MATCH(A$2:A$100,A$2:A$100,0)+IF(COUNTIF(B$1:B1,A$2:A$100)>0,10^9,0)))
如果需要拼接为字符串,直接用&把B2到B6的内容拼接即可。
注意事项
- 公式中的A2:A100可替换为你实际的统计范围
- 若存在多个文本频次相同的情况,会按文本在原列中首次出现的顺序排序
- 如需过滤空值,365版本可将公式中的A2:A100替换为
FILTER(A2:A100,A2:A100<>"")
内容的提问来源于stack exchange,提问作者Davywavy
相关产品推荐
相关产品推荐

