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

Excel需求:对空白单元格分隔的数值组独立求和并填充组内单元格

Excel分组求和:空白分隔组内填充总和

公式方案

兼容所有Excel版本(需辅助列)

  1. 添加辅助列(比如C列)用于标记每组编号:
    • C2单元格输入公式:
      =IF(ISBLANK(A2),"",IF(ISBLANK(A1),MAX(C$1:C1)+1,C1))
      
    • 下拉填充至A列所有有数据的行,空白行对应C列留空。
  2. 在目标列(B列)计算每组总和:
    • B2单元格输入公式:
      =IF(ISBLANK(A2),"",SUMIF(C:C,C2,A:A))
      
    • 下拉填充后,所有非空行都会显示所在组的总和,空白行保持空值。

Excel 365/2021无辅助列方案

直接在B2单元格输入公式并下拉填充:

=IF(ISBLANK(A2),"",SUM(INDEX(A:A,XLOOKUP(TRUE,ISBLANK(A$1:A1),ROW(A$1:A1),0,-1)+1):INDEX(A:A,XLOOKUP(TRUE,ISBLANK(A2:A$1048576),ROW(A2:A$1048576),1048576,1)-1)))

该公式会自动定位当前单元格所在组的起始(上一个空白行的下一行)和结束(下一个空白行的上一行),计算组内总和,支持后续新增数据。

VBA方案

按Alt+F11打开VBA编辑器,插入模块后粘贴以下代码:

Sub FillGroupSum()
    Dim ws As Worksheet
    Dim lastRow As Long, startRow As Long, i As Long
    Dim groupSum As Double
    
    Set ws = ActiveSheet ' 可指定具体工作表,如Set ws = ThisWorkbook.Sheets("Sheet1")
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    startRow = 2 ' 数据起始行,根据实际调整
    
    groupSum = 0
    For i = startRow To lastRow + 1 ' 多循环一行处理最后一组
        If ws.Cells(i, "A").Value = "" Or i > lastRow Then
            ' 填充当前组总和
            ws.Range(ws.Cells(startRow, "B"), ws.Cells(i - 1, "B")).Value = groupSum
            groupSum = 0
            startRow = i + 1
        Else
            groupSum = groupSum + ws.Cells(i, "A").Value
        End If
    Next i
End Sub

运行宏后,B列会自动填充每组总和,空白行保持空值。后续新增数据后重新运行宏即可更新结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:16:10