VBA如何选择动态移动的范围并仅计算最近录入的4行数据
VBA实现仅对最新录入的4行数据求和的方案
实现逻辑
- 先判断当前已有数据行数是否≥4,避免行数不足时报错
- 定位数据列的最后一个非空行位置,作为最新录入行的末尾
- 取该位置往上数共4行的区间,执行求和运算
- 将求和结果写入你指定的单元格(可选择求和列的最后一行下方,或者固定结果单元格)
可直接复用的VBA代码
以下代码默认求和列为B列(对应序号2),结果输出在最后一行的下一列同位置,可按需修改参数:
Sub 最新4行求和() Dim lastRow As Long Dim sumRng As Range Dim targetCol As Integer ' 要执行求和的列,A=1、B=2,按需修改为实际列序号 targetCol = 2 ' 定位目标列的最后一个非空行 lastRow = Cells(Rows.Count, targetCol).End(xlUp).Row ' 校验数据行数 If lastRow < 4 Then MsgBox "当前录入数据不足4行,请完成录入后再操作", vbExclamation Exit Sub End If ' 定义最后4行的求和区间 Set sumRng = Range(Cells(lastRow - 3, targetCol), Cells(lastRow, targetCol)) ' 求和结果写入,此处示例写在最后一行的下一行同列 Cells(lastRow + 1, targetCol).Value = Application.WorksheetFunction.Sum(sumRng) ' 若要写入固定单元格比如D2,替换为 Range("D2").Value = 以上求和逻辑即可 ' 可选:给结果加标注,方便识别 Cells(lastRow + 1, targetCol - 1).Value = "最新4行合计:" End Sub
按钮绑定方法
- 进入Excel「开发工具」选项卡,点击「插入」-「表单控件(按钮)」,在表格合适位置绘制按钮
- 弹出的指定宏窗口里选择上面写的
最新4行求和宏,点击确定即可 - 后续用户录入完4行数据后点击按钮,就会自动识别最新的4行做求和,不会影响之前的计算结果
如果需要对每行的多个列分别执行最新4行求和,只需要在代码中循环遍历需要求和的列序号,重复执行求和逻辑即可。如果数据中间存在空行,可将定位最后一行的逻辑替换为UsedRange的最后行,适配非连续数据场景。
内容的提问来源于stack exchange,提问作者Shane Cahalane
相关产品推荐
相关产品推荐

