以前是我朋友用宏写了一个函数,可我不会,希望帮我解答下,谢谢
你好, 做了一个函数给你. 不仅可对一单元格内的多个数据求和, 也可以对一个区域内的多单元格多数据求和, 包括有小数点的数据都可以.
使用: 按ALT+F11,""插入"菜单-->模块,右侧空白处复制并粘贴下面横下内容. "文件"菜单-->关闭并返回. 使用时只需要输入公式: =snum(目标单元格) 即可.
==========================================================
Function SNum(rng As Range)
Dim str As String, i As Integer, cel As Range
For Each cel In rng
For i = 1 To Len(cel.Text)
If VBA.IsNumeric(Mid(cel.Text, i, 1)) Or Mid(cel.Text, i, 1) = "." Then
str = str & Mid(cel.Text, i, 1)
Else
str = str & "+"
End If
Next i
str = str & "+"
Next cel
str = Replace(WorksheetFunction.Trim(Replace(str, ".", " ")), " ", ".")
str = Replace(WorksheetFunction.Trim(Replace(str, "+", " ")), " ", "+")
SNum = Evaluate(str)
End Function
来自:求助得到的回答b1=LOOKUP(9E+307,--MID(A1,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&5^19)),ROW($1:$99)))
按CTRL+SHIFT+ENTER 结束,然后公式下拉,直接求和。
方法2:按ALT+F11,插入-模块,复制下列语句
Function SplitNumEng(str As String, sty As Byte)
Dim StrA As String
Dim StrB As String
Dim StrC As String
Dim i As Integer
Dim SigS As String
For i = 1 To Len(str)
SigS = Mid(str, i, 1)
If SigS Like "[a-zA-Z]" Then
StrA = StrA & SigS
ElseIf SigS Like "#" Then
StrB = StrB & SigS
Else
StrC = StrC & SigS
End If
Next i
Select Case sty
Case 1
SplitNumEng = StrA
Case 2
SplitNumEng = StrB
Case Else
SplitNumEng = StrC
End Select
End Function
比如你的数据在A1
BI输入 =SplitNumEng(A1,2) 表示提取数字 然后公式下拉,直接求和。追问
不是三个单元格,是在一个单元格里的
追答A1电费10,车费15,话费80 B1=MID(A1,3,2)+MID(A1,8,2)+MID(A1,13,2)
你每个表格上对应的行号和列号
比如电费10对应的是 A3, 车费15对应的是A4 话费80对应的A5
那你就在要合计的那个单元格中写公式,直接写入 =A3+A4+A5 就可以了!
其实不麻烦,如有不懂,可再追问……
我看还是 数据--分列--固定宽度 来分列,再求和的快一点
=sum(A,B,C),abc分别代表那三列
=10+15+80
然后回车就可以了。