标题是囧了一些,方便搜索……
本文链接:http://oicu.cc.blog.163.com/blog/static/1230394712009727102646193/
问题:
发信人: zplvll (~~), 信区: OfficeSoft
标 题: excel,34/45这种数据怎单独把/前后数据取出?
发信站: 水木社区 (Mon Aug 24 15:53:22 2009), 站内
其中部分数据是34/ 或/65这种形式,不改变原始数据,只将数据取出来求和,
有内建函数最好,vba也行,请指点,谢谢
vba法解答:
不管是 /34 还是 45/ 还是夹杂其他的字符,反正就是把所有的数字提取
出来组成数字,然后相加……
然后就可以用自定义函数 =SSUM(A1:B3) 来求和了。
' by oicu#lsxk.org 2009/8/26
' Excel vba - Module1
Function SSum(rng As Range) As Double
Dim T As Range
Dim s As Double
Application.Volatile
'每次单元格改动时,都会自动更新这个自定义函数的值
For Each T In rng
s = s + GetNum(T.value)
Next
SSum = s
End Function
Function GetNum(Srg As String) As Double
Dim i%
Dim s, MyString As String
Dim Bol As Boolean
For i = 1 To Len(Srg)
s = Mid(Srg, i, 1)
Bol = s Like "[0-9.]"
If Bol Then MyString = MyString & s
Next i
If MyString <> "" And IsNumeric(MyString) Then GetNum = Val(MyString)
'含有多个小数点时认定为非数字,值为0。
End Function
另附函数法(Ctrl+Shift+Enter 将这些公式作为数组进行输入)
{=SUM(VALUE(SUBSTITUTE(A1:A3,"/","")))}
下面这个是别人写的,没测试:
发信人: iam0 (R~~O~~O~~O~~~M~~~), 信区: OfficeSoft
左边 {=SUM(VALUE(left(A6:A17,FIND("/",A6:A17)-1)))}
右边 {=SUM(VALUE(RIGHT(A6:A17,LEN(A6:A17)-FIND("/",A6:A17))))}
如果/左右都是整数可以用这样的偏门方法
{=SUM(INT(SUBSTITUTE(A1:A20,"/",".")))}
相关博文:
评论