楼主的描述不是很清晰,也就大致写了一个简单的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
(2)如果选择数字1、2、3、4,当求和(结果)的单元格是空白,则先进行求和,再与响应的单元格相加。
选中起点A、B右边列对应的区域,
按组合键ctrl+F3调出”的窗口点选新建,
在名称栏输入你想要的名称,如“ABC”,点确定。
在图中求和右边单元格输入公式:=sum(ABC)
其他求和同理。
Sub 宏1()
Dim r, i%, c, m
c = Cells(2, Columns.Count).End(xlToLeft).Column
r = Range("A" & Rows.Count).End(xlUp).Row
m = Range("A2:A" & r).Find(What:="终点B", SearchDirection:=xlPrevious).Row + 1
Cells(m, 1) = "求和"
For i = 2 To c
Cells(m, i) = Application.Sum(Range(Cells(2, i), Cells(m - 1, i)))
Next
End Sub
意思:
点名,会增加,比如现在是1-4,插入1行为5后,自动求和,写在最后1个单元格?
哪用vba,选中最后一个格子按alt+=,搞定。