这个超牛逼的求和公式,请速收藏起来!
与 30万 读者一起学Excel
VIP学员的问题,要根据这杂乱无章的费用明细,计算合计金额。
这真是令人头疼的问题!
不幸中的大幸,这种居然可以解决。赶紧把下面的内容收藏起来,否则下回遇到猪队友,欲哭无泪。字符串长度不够后面补0公式
这是答疑老师紫提供的方法。
=正则提取(A2,"(\d+\.?\d+|\d+)",,0)
如果不需要求和,只是将所有数字提取出来,只需将最后参数的0改成1即可。
=正则提取(A2,"(\d+\.?\d+|\d+)",,1)
再新增一行费用明细,验证一下公式。
验证OK。
这是自定义函数,点开发工具 ,VB,插入模板,将代码粘贴进去。
Option Explicit
Function 正则提取(Str As String, Optional Reg As String = "(\d+)", Optional Delimiter As String = ",", Optional 方式 = 1)
' Str 需处理的文本
' Reg 正则表达式,默认为(\d+)提取连续数字
' Delimiter 分隔符,默认为逗号,
' 方式 提取后处理方式,1表示提取后和分隔符Delimiter连接起来,默认值
'                      0表示求和,注意需提取数字
Dim objRegEx As Object, objMh, i, S
Set objRegEx = CreateObject("p")
objRegEx.Pattern = Reg
objRegEx.Global = True
Set objMh = objRegEx.Execute(Str)
If objMh.Count > 0 Then
For i = 0 To objMh.Count - 1
If 方式 = 1 Then
S = S & Delimiter & objMh(i).submatches(0)
Else
S = S + Val(objMh(i).submatches(0))
End If
Next
End If
正则提取 = IIf(方式 = 1, Mid(S, 2), S)
End Function

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。