Excel中多值出现最高频率相同时如何返回全部对应结果
Excel 提取并列最高频值解决方案
原有公式的局限性
你当前使用的=INDEX(A2:A11,MODE(MATCH(A2:A11,A2:A11,0)))仅能返回区域内排在首位的最高频值:MODE函数本身设计逻辑就是返回数据集中出现频率最高的第一个数值,遇到多个值频次并列最高的场景,不会输出全部结果,这就是蓝色区域公式仅返回V1的原因。
可用方案
根据你使用的Excel版本选择对应公式即可,公式直接支持「单最高频值返回单个结果、多并列最高频值用and拼接所有结果」的需求。
适用Excel 365/Excel 2021及以上版本(支持动态数组)
针对你示例中蓝色区域D2:D11的统计场景,直接输入以下公式即可:
=TEXTJOIN(" and ",TRUE,UNIQUE(FILTER(D2:D11,COUNTIF(D2:D11,D2:D11)=MAX(COUNTIF(D2:D11,D2:D11)))))
公式逻辑拆解:
COUNTIF(D2:D11,D2:D11):逐行计算区域内每个值的总出现次数MAX(...):提取区域内的最高出现频次FILTER(...):筛选出所有出现次数等于最高频次的值UNIQUE(...):对筛选结果去重,避免同一值重复返回TEXTJOIN(" and ",TRUE,...):将所有符合要求的值用and拼接为文本,自动忽略空值
适用Excel 2019及更早版本(无动态数组支持)
使用支持返回多众数的MODE.MULT函数替换原公式中的MODE,输入公式后按Ctrl+Shift+Enter三键结束确认(数组公式生效要求):
=TEXTJOIN(" and ",TRUE,INDEX(D2:D11,MODE.MULT(MATCH(D2:D11,D2:D11,0))))
公式逻辑拆解:
MODE.MULT会返回所有最高频值在MATCH结果中的位置数组INDEX根据位置数组返回所有对应的实际值- 最后通过
TEXTJOIN完成文本拼接
效果验证
- 针对无并列的红色区域A2:A11,上述公式会直接返回单个结果
V1,和你原有公式效果完全一致 - 针对存在并列的蓝色区域D2:D11,公式会自动返回
V1 and V2,符合你的预期输出要求
内容的提问来源于stack exchange,提问作者Chouette
相关产品推荐
相关产品推荐

