楼主的描述不是很清晰,也就大致写了一个简单的VBA程序代码,望笑纳。
(1)程序代码如下:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i1, i2, i3, i4
On Error Resume Next '忽略运行过程中可能出现的错误
Application.EnableEvents = False '开启代码只执行一次
Set mysheet1 = ThisWorkbook.Worksheets("Sheet1")
If Target.Row > 2 And Target.Row < 7 And Target.Column = 1 Then '如果是选择A列第3-6行,则
If mysheet1.Cells(8, 2) = "" Then '如果单元格是空白,则先求和
mysheet1.Cells(8, 2) = Application.WorksheetFunction.Sum(mysheet1.Range("B3:B7"))
End If
If mysheet1.Cells(8, 3) = "" Then
mysheet1.Cells(8, 3) = Application.WorksheetFunction.Sum(mysheet1.Range("C3:C7"))
End If
mysheet1.Cells(8, 2) = mysheet1.Cells(8, 2) + mysheet1.Cells(Target.Row, 2) '再累积相应的值
mysheet1.Cells(8, 3) = mysheet1.Cells(8, 3) + mysheet1.Cells(Target.Row, 3)
End If
Application.EnableEvents = True '恢复代码只执行一次
End Sub
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/6f061d950a7b020827a7b2886cd9f2d3572cc869?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
(2)如果选择数字1、2、3、4,当求和(结果)的单元格是空白,则先进行求和,再与响应的单元格相加。
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/0dd7912397dda1440816e0dbbcb7d0a20cf486b8?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/b999a9014c086e0645d9b3220c087bf40ad1cb62?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
追问恩 老师说要用循环结构 因为工程过程中 难免会有新的点插入 所以要求在插入点后 即插入行后仍然可以使用自动求和 并保存在列最后一个单元格中
追答楼主的问题,其实没有必要使用到循环结构(如:一个个单元格去相加,这无意中将会增加程序的复杂程度,降低运算速度),直接引用现成的SUM函数,以及更改其求和范围即可。
追问好