自动在最后一行添加合计,听说没几个人会用!

如果在我每次输入数值后,在最后一行显示目前的合计?
这个问题其实是我当初学习Excel时遇到的难题,很长时间都没能解决,我想也有跟我一样遇到类似的问题吧!
这个表格,未来我们还要不断的录入内容,每次都要录入后重新合计太麻烦了能不能每次录入后自动添加合计?
好吧!我们这就来使用Excel解决这个问题!
效果演示
效果说明(附件下载-文末):
1、在表格的最后一行添加数据,会自动在下一行写入目前的合计数据
2、表格中数据有更新,增加、修改和删除都会自动更新合计!
如何实现
这里主要是借助条件触发,这个一般我们叫做事件,有什么情况触发了这件事情,案例中我们使用的是Change事件,也就是单元格的值改变,就会触发,具体触发什么,我们可以自己写代码来实现!
代码截图:
如果你已经看到这里,也觉得“duck不必”,那么可以跳过源码看我们的更好方案了!
VBA源码(复制粘贴到对应的工作表中):

'作者:Excel办公实战-小易'功能:自动写入合计'------------------------------------------------------------------Private Sub Worksheet_Change(ByVal Target As Range)
Dim maxRow As Long '避免事件反复触发! Application.EnableEvents = False '小于第三列和大于第2行触发事件(根据实际情况修改) If Target.Column < 3 And Target.Row > 1 Then '获取有内容的最大行(最后一行) maxRow = Cells(Rows.Count, 1).End(3).Row If Cells(maxRow, 1) <> "合计" Then '没有合计,写入合计 Cells(maxRow + 1, 1) = "合计" Cells(maxRow + 1, 2) = _ Application.Sum(Range("B2").Resize(maxRow, 1)) Else '合计存在直接在原位置更新 Cells(maxRow, 2) = _ Application.Sum(Range("B2").Resize(maxRow - 2, 1)) End If '设置格式 With Range("A1").CurrentRegion .Borders.LineStyle = 1 .Font.Bold = False End With '重新获取有内容的最大行 maxRow = Cells(Rows.Count, 1).End(3).Row '设置字体加粗 Cells(maxRow, 1).Resize(1, 2).Font.Bold = True End If Application.EnableEvents = TrueEnd Sub


以上只是解决了刚学那会遇到的难题,其实这里面有一个我们思维定式的问题,认为合计只能在最下面,从来没有想过难道上面不行吗?还是不香?
放到上面,下面怎么录入都不受影响,而且我们可以把求和的范围调的大一点,这样新录入的也会自动求和进来,完全实现了我们想要的录入+自动求和

小结:思路决定出路,很多看似“难题”,其实只是看问题的角度问题而已!

(0)

相关推荐