所有工作表相同单元格数值分别相加
有时候需要将所有工作表的相同单元格数据相加进行汇总,比如shee1到sheet10所有的D4单元格相加,将结果填到sheet11的D4单元格,依次需要统计D5、D6等或者K4、K5、K6
VBA代码实现
Sub SumD5Cells()
Dim ws As Worksheet //定义ws为工作表
Dim totalD As Double //定义两个双精度的totalD、totalK
Dim totalK As Double
Dim activeSheet As Worksheet //定义活动工作表activeSheet
Dim i As Integer //定义i为整型
Set activeSheet = ThisWorkbook.activeSheet //给activeSheet赋值为当前工作簿的活动工作表
For i = 4 To 28 //for循环i从4到28
totalD = 0
totalK = 0
For Each ws In ThisWorkbook.Worksheets //遍历所有的工作表
If ws.Name <> activeSheet.Name Then //如果当前工作表不是活动工作表
totalD = totalD + ws.Cells(i, 4).Value //将每个工作表D列相同单元格累加
totalK = totalK + ws.Cells(i, 11).Value //将每个工作表K列相同单元格累加
End If //结束判断
Next ws //继续下一个工作表
If totalD <> 0 Then //如果结果不为0
activeSheet.Cells(i, 4).Value = totalD //将结果写到活动工作表的对应单元格
End If
If totalK <> 0 Then
activeSheet.Cells(i, 11).Value = totalK //将结果写到活动工作表的对应单元格
End If
Next i
End Sub
一段简单代码来实现,详细每句代码的含义见注释。
函数实现
-
在需要汇总的工作表对应单元格中填入公式
=sum(‘1:31’!d4)
回车确定即可 -
其中公式中的
“1”
代表需要汇总第一个工作表的表名,“31”
代表需要汇总的最后一个工作表的表名,“D4”
为要汇总的单元格 -
依次向下填充即可汇总整个D列,其他列同理
要汇总的工作表要是连续的,中间不能存在不需要汇总的表,存放汇总结果的表,不能存在需要汇总的表的中间,要放到汇总范围的前面或者后面