You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Excel中单列公式:统计连续重复的0和1的出现次数

嘿,我完全明白你要实现的效果!之前搜到的旧公式不管用大概率是版本兼容的问题,我给你两个适配不同Excel版本的单公式方案,都是直接能用的:

方案1:适用于Excel 365/2021(动态数组版本)

这个版本的Excel支持动态数组和LAMBDA函数,公式非常简洁,输入后会自动填充整个列:

  1. 假设你的数据从A2单元格开始(A1可以设为表头“原始值”),在B1单元格输入表头“连续计数”。
  2. 选中B2单元格,输入以下公式后直接按回车:
=SCAN(0,A2:A16,LAMBDA(累计计数,当前值,IF(当前值=OFFSET(当前值,-1,0),累计计数+1,1)))
  1. 公式会自动填充B2到B16,正好对应你要的结果。

公式简单解释:

  • SCAN函数会逐个遍历A2到A16的数值,累计计数是上一个单元格的统计结果,当前值是当前A列的数值。
  • 如果当前值和它上一个单元格的数值(OFFSET(当前值,-1,0))相同,就把累计计数加1;如果不同,就重置为1。
  • 因为A2是第一个数据,它的上一个单元格A1是空值,所以B2会直接显示1,完全符合你的需求。
方案2:适用于Excel 2019及更早版本(数组公式)

如果你的Excel版本不支持动态数组,就用这个数组公式,需要手动下拉填充:

  1. 同样假设数据从A2开始,在B2单元格输入以下公式:
=COUNTIF(INDIRECT("A"&MAX(IF(A$2:A2<>A2,ROW(A$2:A2),ROW(A$2)-1))&":A2"),A2)
  1. 一定要按住Ctrl+Shift+Enter组合键输入(不能只按回车),此时公式会被自动加上大括号{},表示这是数组公式。
  2. 把鼠标放在B2单元格右下角,当光标变成十字形时,下拉填充到B16即可。

公式简单解释:

  • IF(A$2:A2<>A2,ROW(A$2:A2),ROW(A$2)-1):检查从A2到当前行的所有值,找出和当前值不同的行号;如果没有不同值(比如第一个1),就用A2的上一行行号。
  • MAX(...):取上述行号的最大值,也就是当前连续序列的起始行的上一行。
  • INDIRECT(...):生成从起始行到当前行的单元格范围。
  • COUNTIF(...):统计这个范围内和当前值相同的数量,就是连续出现的次数。

用这两个公式都能得到你要的结果:

A列B列
11
12
13
01
02
11
01
11
12
01
02
11
01
02
11

内容的提问来源于stack exchange,提问作者Fábio Linhares

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:44:12