正则表达式应用一例 小半年不更新了,各种事导致更新一推再推。中间也接收到过好多朋友的催更和建议,实在惭愧。因为VBA纯属爱好,也希望大家多多给我提问题,我多解决问题,也有更多的素材。 以后更新会更加口语话,以个人的学习笔记形式给大家分享经验和心得。希望大家也能各取所需,不枉花几分钟看我的文章。 遇到一位知友的提问,在一个报销统计表中,个人的名字和需要报销的费用混杂在一起,需要求出来其中所有数字的和。具体形式如下。 excel函数对处理这方面的功能是比较弱的,尤其当数据格式很不规则的时候,会比较难。 数据这么不规则,也遭到了知友的无语吐槽。 哈哈,言归正传,既然有人这么写,那么肯定不是个例,还是要想办法解决问题。最方便快捷的方法还是VBA的正则表达式。 将如下代码写入模块中,只需要直接引用函数即可。 自定义函数代码 Function feiyong(rng As String) Set reg = CreateObject("vbscript.regexp") reg.Global = True reg.Pattern = "d " Set mat = reg.Execute(rng) For Each m In mat strr = strr Val(m) Next feiyong = strr End Function 代码中的一个小知识点: d 在正则表达式中表示匹配至少一个数字。通过这个规则将单元格内所有数字匹配得到并求和。 val函数 val(字符串表达式)将数字字符串换成数值。这里正则表达式匹配出来后的值是string类型,需要将其转为数字类型,然后求和。