快好知 kuaihz

乱中取数字-Excel中文字和数字混合对数字部...

正则表达式应用一例

小半年不更新了,各种事导致更新一推再推。中间也接收到过好多朋友的催更和建议,实在惭愧。因为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类型,需要将其转为数字类型,然后求和。

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:数字  数字词条  混合  混合词条  文字  文字词条  Excel  Excel词条  
办公

 1个Excel函数居然可以制作多...

一、Rept函数的作用、语法。作用:根据指定次数重复文本。语法:=Rept(需要重复的文本,重复的次数)。示例:目的:将“|”重复10次。方法:在目标单元格中输...(展开)