这个超牛逼的求和公式,请速收藏起来!

与 30万 读者一起学Excel

VIP学员的问题,要根据这杂乱无章的费用明细,计算合计金额。

这真是令人头疼的问题!

不幸中的大幸,这种居然可以解决。赶紧把下面的内容收藏起来,否则下回遇到猪队友,欲哭无泪。

这是答疑老师紫色提供的方法。

=正则提取(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("vbscript.regexp")

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

(0)

相关推荐