遇到一位知友的提问,在一个报销统计表中,个人的名字和需要报销的费用混杂在一起,需要求出来其中所有数字的和。具体形式如下。
excel函数对处理这方面的功能是比较弱的,尤其当数据格式很不规则的时候,会比较难。
数据这么不规则,也遭到了知友的无语吐槽。
哈哈,言归正传,既然有人这么写,那么肯定不是个例,还是要想办法解决问题。最方便快捷的方法还是VBA的正则表达式。
将如下代码写入模块中,只需要直接引用函数即可。
自定义函数代码
Function feiyong(rng As String)Set reg = CreateObject("vbscript.regexp")reg.Global = Truereg.Pattern = "\d "Set mat = reg.Execute(rng)For Each m In matstrr = strr Val(m)Nextfeiyong = strrEnd Function
代码中的一个小知识点:
\d 在正则表达式中表示匹配至少一个数字。通过这个规则将单元格内所有数字匹配得到并求和。
val函数 val(字符串表达式)将数字字符串换成数值。这里正则表达式匹配出来后的值是string类型,需要将其转为数字类型,然后求和。
VBA笔记|干货
欢迎转发分享,让更多人学习到