打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

与 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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA之正则表达式(15)
把123456789转换为12-345-6789的三种方法
Excel一对多查找自定义函数
如何让EXCEL计算出带注释公式的结果
每日Excel分享(函数)| 实现一对多查询的多种方法,不能更简单了
VB.NET 字符串搜索、比较、筛选与替换函数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服