如果是wps可以用这个公式:
=EVALUATE(CONCAT(IF(LENB(MID(SUBSTITUTE(A1,"、","+"),ROW($1:$1000),1))=2,"",MID(SUBSTITUTE(A1,"、","+"),ROW($1:$1000),1)))&"+0")
如果是excel可以用这个公式:
=SUM(IFERROR(--RIGHT(TRIM(MID(SUBSTITUTE(A1,"、",REPT(" ",100)),(ROW($1:$100)-1)*100+1,100)),LEN(TRIM(MID(SUBSTITUTE(A1,"、",REPT(" ",100)),(ROW($1:$100)-1)*100+1,100)))*2-LENB(TRIM(MID(SUBSTITUTE(A1,"、",REPT(" ",100)),(ROW($1:$100)-1)*100+1,100)))),0))
都是数组公式,同时按下Ctrl+Shift+Enter结束输入。
公式中A1位你要求和内容所在单元格,自己改一下就行。
以下是我帮您做了个VBA的自定义函数,供您参考。
用法:先把代码粘贴到模块中,然后在单元格中输入=qh(文本所在的单元格地址)。
注意点:工作簿要存为启用宏的格式,否则代码保存不了。
所有数字精度为小数点在2位以内。
名称中间代表型号的数字最好改用汉字,比如“10号电池25元”改成“十号电池25元”
当然,如果有TEXTJION这样新版函数可用的话,也可以考虑用函数解决。
Function qh(rng As Range)
Dim Regx As Object
Set Regx = CreateObject("vbscript.regexp")
With Regx
.Pattern = "[+-]?\d+(.\d{2})?"
.Global = True
End With
Set mh = Regx.Execute(rng)
If mh.Count > 0 Then
For i = 0 To mh.Count - 1
a = a + Val(mh.Item(i).Value)
Next i
End If
qh = a
End Function