如何统计Excel中行内状态从1变为0的次数(不含0变1)?
解决Excel中统计每行从1变为0的次数问题
以下是几种实用的解决思路,直接对应你的需求:
方法1:SUMPRODUCT公式(推荐,适用于Excel 2019/365)
在每行的结果单元格(比如DB列)输入公式:=SUMPRODUCT((B2:CA2=1)*(C2:DA2=0))
按回车即可得到统计结果。
- 原理:
B2:CA2是当前行的前一周状态列,C2:DA2是后一周状态列。当前一周为1且后一周为0时,两个条件的乘积为1,SUMPRODUCT会把所有符合条件的1累加,就是你要的次数。 - 对应你的示例:Item 1代入公式后会计算出3,Item 2计算出1,完全匹配需求。
方法2:数组公式(兼容旧版Excel)
如果用的是2016及更早的Excel版本,输入以下公式后按Ctrl+Shift+Enter确认(不是普通回车):=SUM(IF((B2:CA2=1)*(C2:DA2=0),1,0))
- 原理:和SUMPRODUCT逻辑一致,通过数组遍历每行的相邻列,判断1→0的转换,SUM累加符合条件的次数。
方法3:VBA自定义函数(适合大量数据或重复使用)
如果表格行数极多,或者需要频繁调用这个统计逻辑,可以写一个自定义函数:
- 按
Alt+F11打开VBA编辑器,插入一个新模块; - 粘贴以下代码:
Function Count1ToZero(rng As Range) As Integer Dim prevVal As Variant Dim count As Integer count = 0 prevVal = rng.Cells(1).Value For Each cell In rng.Cells If prevVal = 1 And cell.Value = 0 Then count = count + 1 End If prevVal = cell.Value Next cell Count1ToZero = count End Function
- 返回Excel,在结果单元格输入
=Count1ToZero(B2:DA2)即可。
- 原理:函数遍历指定的周次列区域,逐个对比当前值和前一个值,只要出现1→0的转换就计数加1。
内容的提问来源于stack exchange,提问作者Maladorf
相关产品推荐
相关产品推荐

