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

Excel中数据集分组及组数统计方法

解决Excel中统计指定范围>=5数值分组数量的问题

方法一:公式法(无需编程)

假设你的数据在A列,按以下步骤操作:

  1. 添加辅助列标记有效行与目标值
    在B1单元格输入公式,用于标记需要统计的行中数值>=5的单元格:

    =IF(OR(AND(ROW()>=13,ROW()<=61),ROW()>=249),IF(A1>=5,1,0),0)
    

    下拉填充到所有数据行。这个公式会把62-248行标记为0,13-61、249及以后行中>=5的标记为1,<5的标记为0。

  2. 标记分组的起始位置
    在C1单元格输入:

    =IF(B1=1,1,0)
    

    在C2单元格输入公式,判断当前行是否是新分组的开始(即当前行是目标值,上一行不是):

    =IF(B2=1,IF(B1=0,1,0),0)
    

    下拉填充到所有数据行。C列中值为1的单元格代表一个新分组的起点。

  3. 统计分组总数
    在任意空白单元格输入求和公式,得到最终分组数量:

    =SUM(C:C)
    

方法二:VBA宏(高效处理大数量数据)

如果数据量超过7000行,VBA宏的运行效率会更高:

  1. 按Alt + F11打开VBA编辑器,插入一个新模块。
  2. 粘贴以下代码:
    Sub CountQualifiedGroups()
        Dim targetWs As Worksheet
        Dim lastRow As Long
        Dim currentRow As Long
        Dim groupCount As Integer
        Dim isInGroup As Boolean
        
        ' 指定工作表,可修改为你的工作表名称,比如Sheet1
        Set targetWs = ThisWorkbook.Worksheets("Sheet1")
        lastRow = targetWs.Cells(targetWs.Rows.Count, "A").End(xlUp).Row
        groupCount = 0
        isInGroup = False
        
        For currentRow = 1 To lastRow
            ' 检查当前行是否在统计范围内
            If (currentRow >= 13 And currentRow <= 61) Or currentRow >= 249 Then
                ' 判断当前单元格值是否>=5
                If targetWs.Cells(currentRow, "A").Value >= 5 Then
                    If Not isInGroup Then
                        groupCount = groupCount + 1
                        isInGroup = True
                    End If
                Else
                    isInGroup = False
                End If
            Else
                ' 不在统计范围,重置分组状态
                isInGroup = False
            End If
        Next currentRow
        
        ' 弹窗显示结果
        MsgBox "符合条件的分组总数:" & groupCount
    End Sub
    
  3. 修改代码中的Sheet1为你的实际工作表名称,按F5运行宏,即可得到分组数量。

内容的提问来源于stack exchange,提问作者Bear44477

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 05:45:35