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

Excel中对3万多个不同大小区域求和:公式、数组还是VBA?

批量对J列独立区域求和并写入对应G列下方的方案

方法1:使用VBA宏(高效处理大量区域)

针对30000个独立区域的场景,VBA是最直接的自动化解决方案,以下是可直接运行的代码:

  1. 按Alt + F11打开VBA编辑器
  2. 插入新模块:右键左侧工程窗口→插入→模块
  3. 粘贴以下代码:
Sub SumJAreasToG()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim areaStart As Long, areaEnd As Long
    Dim sumVal As Double
    
    ' 指定目标工作表,替换为你的实际表名
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    lastRow = ws.Cells(ws.Rows.Count, "J").End(xlUp).Row
    areaStart = 1
    
    ' 遍历J列所有非空区域
    Do While areaStart <= lastRow
        ' 定位当前区域的最后一行
        areaEnd = ws.Cells(areaStart, "J").End(xlDown).Row
        
        ' 计算当前J列区域的求和值
        sumVal = Application.WorksheetFunction.Sum(ws.Range("J" & areaStart & ":J" & areaEnd))
        
        ' 将结果写入对应区域下一行的G列
        ws.Cells(areaEnd + 1, "G").Value = sumVal
        
        ' 跳转到下一个区域的起始行(自动跳过空行)
        areaStart = ws.Cells(areaEnd + 1, "J").End(xlDown).Row
    Loop
End Sub
  1. 修改代码中的Sheet1为你的实际工作表名称
  2. 按F5运行宏,或回到Excel界面通过「开发工具→宏」执行

代码说明

  • 自动识别J列中由空行分隔的独立数据区域
  • 对每个区域求和后,精准写入该区域最后一行的下一行G列位置
  • 遍历完所有区域后自动停止

方法2:使用Power Query(无需编程)

若你不熟悉VBA,可通过Power Query实现批量处理:

  1. 选中J列全部数据(包含空行),点击「数据→从表格/区域」(若J列有表头,勾选「我的表格有标题」)
  2. 在Power Query编辑器中:
    • 添加索引列:点击「添加列→索引列→从1开始」
    • 添加自定义列,公式为=IF(ISBLANK([你的J列表头]),0,1)(替换为实际表头),再点击「转换→填充→向下」
    • 点击「转换→分组依据」,按填充后的自定义列分组,对J列数据执行「求和」操作
  3. 完成分组后,将结果加载回Excel,再匹配到对应G列的目标位置

注意事项

  • 若区域不是由空行分隔,而是有特定标识(如专属表头),需调整VBA的区域判断逻辑,或修改Power Query的分组依据
  • 运行VBA前建议备份文件,避免意外数据覆盖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:39:20