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

Excel VBA实现G列最新4条数据求和写入对应H列的问题求助

问题排查点

  • 第一处逻辑错误:wks.Range("G2").End(xlDown) 无法正确定位G列最后一行,若G列存在空单元格会直接停在空单元格上方,且当G列有效数据不足4行时,Offset(-3,0) 会直接触发下标越界错误。
  • 第二处写入位置错误:原代码的求和结果写入逻辑是找H列最下方非空单元格向下偏移1行再偏移3行,完全没有匹配到最新4条数据的最后一行右侧单元格,不符合需求要求。
  • 第三处分组逻辑缺失:没有做数据行数校验,未判断当前录入的数据是否刚好凑满4的倍数条,会出现不满4条也强制求和的异常情况。

修正后代码

Private Sub CommandButton3_Click()
    Dim wks As Worksheet
    Dim lastRowG As Long
    Dim sumVal As Double
    Set wks = Sheet2 ' 可根据实际使用的工作表调整
    
    ' 正确定位G列最后一行非空单元格行号,不受列内空单元格影响
    lastRowG = wks.Cells(wks.Rows.Count, "G").End(xlUp).Row
    
    ' 校验数据量:假设G1是表头,从G2开始录入数据,总有效数据量为lastRowG-1,需满足凑满4条一组
    If lastRowG < 2 Or (lastRowG - 1) Mod 4 <> 0 Then
        MsgBox "当前有效数据不足4条或未凑满4条一组,暂不执行求和"
        Exit Sub
    End If
    
    ' 对最新一组的4条数据求和
    sumVal = Application.WorksheetFunction.Sum(wks.Range(wks.Cells(lastRowG - 3, "G"), wks.Cells(lastRowG, "G")))
    
    ' 结果直接写入当前组最后一条数据右侧的H列单元格
    wks.Cells(lastRowG, "H").Value = sumVal
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:36:05