如何在Excel中统计连续勾选的复选框分组数量?
Excel统计同一行连续勾选复选框的分组数量
一、公式实现步骤
1. 绑定复选框到单元格
每个复选框右键→设置控件格式→控制→单元格链接,将第2行的12个复选框分别链接到B2至M2单元格(勾选时对应单元格显示TRUE,未勾选显示FALSE),第3、4行同理绑定到对应行的B列到M列。
2. 标记分组起始位置(辅助列)
在A2单元格输入FALSE(作为第一个复选框的前置判断),然后在N2单元格输入公式:
=IF(B2=TRUE, IF(OR(A2=FALSE, COLUMN(B2)=2), 1, 0), 0)
将公式向右填充到M2,再向下填充到第4行。该公式会在连续勾选组的第一个TRUE位置标记1,其余位置标记0或空。
3. 为连续组分配编号(辅助列)
在O2单元格输入公式:
=IF(B2=TRUE, IF(N2=1, MAX($O$1:O1)+1, O1), "")
向右填充到M2,再向下填充到第4行。连续勾选的复选框会被分配相同的组号,未勾选的位置为空。
4. 统计每组勾选数量
在P2、Q2、R2分别输入以下公式,统计第1、2、3组的勾选数:
# P2(组1数量) =COUNTIF($O$2:$M$2,1) # Q2(组2数量) =COUNTIF($O$2:$M$2,2) # R2(组3数量) =COUNTIF($O$2:$M$2,3)
将这三个公式向下填充到第4行,即可得到每行3个分组的勾选数量。若要让未出现的分组显示空值而非0,可修改公式为=IF(COUNTIF($O$2:$M$2,1)=0,"",COUNTIF($O$2:$M$2,1))。
(可选)Excel 365动态数组简化公式
如果使用Excel 365及以上版本,可直接在P2输入以下动态数组公式,自动输出当前行所有分组的数量(最多3个):
=LET( data,B2:M2, starts,IF(data=TRUE,IF(OR(OFFSET(data,0,-1)=FALSE,COLUMN(data)=MIN(COLUMN(data))),1,0),0), groups,SCAN(0,starts,LAMBDA(a,b,IF(b=1,a+1,IF(INDEX(data,COLUMN(data)-MIN(COLUMN(data))+1)=TRUE,a,"")))), counts,FILTER(COUNTIF(groups,UNIQUE(FILTER(groups,groups<>""))),UNIQUE(FILTER(groups,groups<>""))<>""), IFERROR(counts,"") )
公式会自动溢出到Q2、R2,无需手动填充。
二、VBA实现步骤
如果需要批量自动化统计,可使用VBA宏:
- 按
Alt+F11打开VBA编辑器,右键点击当前工作表→插入→模块。 - 粘贴以下代码:
Sub CountCheckedGroups() Dim ws As Worksheet Set ws = ActiveSheet ' 可修改为指定工作表,如Sheets("数据统计") Dim rowNum As Integer ' 遍历第2-4行(共3行数据) For rowNum = 2 To 4 Dim colNum As Integer Dim currentCount As Integer Dim groupIndex As Integer currentCount = 0 groupIndex = 1 ' 遍历B到M列(对应12个复选框) For colNum = 2 To 13 If ws.Cells(rowNum, colNum).Value = True Then currentCount = currentCount + 1 Else If currentCount > 0 Then ' 从P列开始输出分组数量(P=16,Q=17,R=18) ws.Cells(rowNum, 15 + groupIndex).Value = currentCount groupIndex = groupIndex + 1 currentCount = 0 End If End If Next colNum ' 处理最后一个连续勾选组 If currentCount > 0 Then ws.Cells(rowNum, 15 + groupIndex).Value = currentCount End If ' 清空超过3组的单元格(确保每行最多显示3个分组) For colNum = 18 To 20 ws.Cells(rowNum, colNum).Value = "" Next colNum Next rowNum End Sub
- 修改代码中的工作表名、行号范围(如果你的数据不在2-4行),按
F5运行宏,即可自动统计每行的分组勾选数量。
内容的提问来源于stack exchange,提问作者Iko
相关产品推荐
相关产品推荐

