如何用Excel公式统计并排序E2:J27区域内的高频乐透号码?
解决Excel乐透号码频率统计排序问题
问题说明
在Excel中,每组乐透游戏的6个开奖号码位于E-J列,需要统计并排序E2:J27区域内出现频率最高的号码,但使用MODE函数的方法无法得到预期结果。
尝试过的数组公式(旧版Excel需按Ctrl+Shift+Enter确认输入):
=MODE(IF(ISERROR(MATCH($E$2:$J$27,D$30:D30,0)),$E$2:$J$27))
或
=IFERROR(MODE(IF(COUNTIF(D$30:D30,$E$2:$J$27)={0},$E$2:$J$27)),"")
期望最终得到如下格式的统计排序表格:
| 号码 | 出现次数 |
|---|---|
| 24 | 17 |
| 12 | 14 |
有效解决方案
方法1:Excel 365/2021及以上版本(动态数组)
直接用以下公式就能自动生成完整的统计排序表(无需下拉填充):
=SORT(HSTACK(UNIQUE(TOCOL(E2:J27,1)),COUNTIF(E2:J27,UNIQUE(TOCOL(E2:J27,1)))),2,-1)
- 公式逻辑:先用
TOCOL把二维区域转为一维列表,UNIQUE提取不重复号码,COUNTIF统计每个号码的出现次数,HSTACK合并两列数据,最后SORT按出现次数降序排列。
如果需要拆分步骤:
- 提取不重复号码(放在D30单元格):
=SORT(UNIQUE(TOCOL(E2:J27,1)),1,1)
- 统计对应次数(放在E30单元格):
=COUNTIF(E2:J27,D30#)
方法2:旧版Excel(无动态数组)
- 提取不重复号码:
在D30输入公式,按Ctrl+Shift+Enter确认后下拉,直到出现错误值再删除错误行:
=INDEX($E$2:$J$27,MIN(IF(COUNTIF($D$29:D29,$E$2:$J$27)=0,ROW($E$2:$J$27)*100+COLUMN($E$2:$J$27),999999)))
- 统计出现次数:
在E30输入公式并下拉填充:
=COUNTIF($E$2:$J$27,D30)
- 排序:
选中D30:EXX数据区域,点击「数据」选项卡的「排序」,设置主要关键字为「出现次数」,排序依据选「数值」,次序设为「降序」。
原MODE方法无效原因
你使用的MODE公式逻辑是逐个提取未出现过的众数,但MODE函数本身仅返回第一个出现频率最高的数值,当存在多个相同频率的号码时,这种数组公式容易出现遗漏或重复,无法完整统计所有号码的频率并实现排序需求。
内容的提问来源于stack exchange,提问作者IntoTheDeep
相关产品推荐
相关产品推荐

