方法一:在B1中输入公式=SUM(MID(A1,{1,6,11,16,21},4)*1)
方法二:定义一个名称,比如“求和”,输入=EVALUATE(SUBSTITUTE(Sheet1!$A2,"、","+"))后确定,在B1中输入=求和,即得到要的结果。方法二通用性更强些。
方法三:用VBA求解。进入VBE编辑环境,插入模块,输入代码:
Function 单元格求和(i As Range)
单元格求和 = Application.Evaluate(WorksheetFunction.Substitute(i, "、", "+"))
End Function
回到刚才的表上在B1中输入=单元格求和(A1)即可得到想要的结果。
如果小计与小计之间的间隔是有规律的或是固定的那就很好办了
首先点击 工具--宏--Visual Basic Editor
在左上方双击你要操作的sheet页,复制下面代码
Sub test()
Dim i As Integer
Dim k As Integer
Dim StrCount As String
Dim j As Integer
Dim AllCoul As Integer
Dim Jiange As Integer
i = 0
j = 0
k = 1
AllCoul = 33
Jiange = 7
For i = 1 To 33
If i Mod Jiange = 0 Then
Rows(i & ":" & i).Select
Selection.Insert Shift:=xlDown
j = j + 1
End If
Next i
For i = 1 To AllCoul + j
If i = AllCoul + j Then
Cells(i, 1).Value = "合计"
Cells(i, 2).Value = "=SUM(" & Mid(StrCount, 1, Len(StrCount) - 1) & ")"
Exit Sub
End If
If i Mod Jiange = 0 Then
Cells(i, 1).Value = "小计"
Cells(i, 2).Value = "=SUM(B" & k & ":B" & (i - 1) & ")"
StrCount = StrCount & "B" & i & ","
k = i + 1
End If
If AllCoul + j - i < 7 Then
StrCount = StrCount & "B" & i & ","
End If
Next i
End Sub
点击执行或者按F5 就ok了
说明:AllCoul 是你数据的总行数,Jiange 是你求和的间隔,8行计数一次就是8,9行计数一次就是9
可能有点繁琐但绝对好用,要下班了,没时间优化了
如果有高手用公式能求出来,一定要写出来啊,我也想学习一下。
如果您的小计公式是按工具条上∑求得的,那么将光标放在合计单元格,再按一次∑就会得到每个小计的相加结果。
可以采用取巧的办法,如果数据区域规范的话,可以将所有区域的总和求出除以2,B24中输入
=SUM(B1:B23)/2
=SUMIF(A1:A50,"小计",b1"b50)