ARTICLE · 1012420
Excel 高阶玩法|一键算出最长连续连胜场次,不用辅助列
Excel 高阶玩法|一键算出最长连续连胜场次,不用辅助列
业务场景 比赛、考勤、生产记录,需要统计最长连续出现某状态的次数。 本例:B 列是每场比赛胜负结果,需要算出历史上最长的连续连胜场数。 表格中可以看到出现过连续 3 场胜利,公式输出结果 传统方法:需要辅助列做标记、累加,还要处理中断重置逻辑,步骤繁琐。 Excel365 动态数组组合公式,单个单元格直接算出最长连续连胜,不用辅助列。 完整公式: 
公式逐层拆解 取出里面最大的数字,得到最长连续连胜场次:3 通用模板 模板 1:统计最长连续 "胜" 的次数(本例) 拓展 1:统计最长连续 "负" 场 只需要修改 IF 的判断条件: 拓展 2:考勤场景,统计最长连续出勤天数 B 列为考勤,"出勤" 为有效状态 拓展 3:屏蔽空单元格干扰 如果区域内存在空白单元格,空白会被判定为非目标状态,自动作为分隔断点。 传统辅助列思路对比 辅助列 C2 输入: 向下填充,最后用 ✅数组公式方案: 避坑要点 

01
3。=MAX(LEN(TEXTSPLIT(CONCAT(IF(B2:B12="胜",1,0)),0)))
02
=MAX(LEN(TEXTSPLIT(CONCAT(IF(B2:B12="胜",1,0)),0)))IF(B2:B12="胜",1,0)遍历每一行胜负,胜利输出数字1,非胜利(负 / 平)输出数字0。得到数组:{0;0;1;1;1;0;0;1;0;1;1}
CONCAT(...)把上面数组全部拼接成一串文本字符串:00111001011TEXTSPLIT(...,0)用0作为分隔符拆分字符串,把 0 全部切掉,剩下由连续 1 组成的片段:{"","","111","","1","11"}LEN(...)计算每一段文本的字符长度,也就是每一段连胜的场次:{0,0,3,0,1,2}MAX(...)
03
=MAX(LEN(TEXTSPLIT(CONCAT(IF(数据区域="胜",1,0)),0)))=MAX(LEN(TEXTSPLIT(CONCAT(IF(B2:B12="负",1,0)),0)))=MAX(LEN(TEXTSPLIT(CONCAT(IF(B2:B12="出勤",1,0)),0)))=MAX(LEN(TEXTSPLIT(CONCAT(IF(B2:B12="胜",1,0)),0)))04
=IF(B2="胜",C1+1,0)MAX(C2:C12)得到最大值。优点:逻辑直观,旧版 Excel 可用 缺点:必须占用一整列辅助单元格;数据增减,辅助列要同步维护;不适合仪表盘、看板场景。
优点:单单元格完成全部计算,零辅助列,适合报表看板; 缺点:需要 Excel365/2021 及以上动态数组版本。
05
整套函数依赖 CONCAT、TEXTSPLIT动态数组,旧版 Excel 无法运行。判断文本要完全匹配,区分中英文符号, "胜"不要写成胜(缺少英文双引号)。只要出现非目标值(负、平、空白),就视为链条中断,重新开始计数。 如果全部记录都没有胜利,公式返回 0,不会报错。
