龙空技术网

VBA编程,如何用正则表达式,提取文字中的数字,计算求和

江觅 657

前言:

眼前看官们对“vba数字转换为字符串的方法”大概比较关注,各位老铁们都想要知道一些“vba数字转换为字符串的方法”的相关资讯。那么小编同时在网摘上搜集了一些关于“vba数字转换为字符串的方法””的相关文章,希望你们能喜欢,小伙伴们一起来学习一下吧!

在各种编程应用中,可以使用正则表达式匹配不同的字符数字,以实现提取不同类型数据的结果。

本文介绍一种提取文字中的数字并进行求和的二种方法。其实,也是一种相对普遍的筛选过程。

方法一:通过引入文件的形式进行正则表达式匹配。

引入文件:Microsoft VBScript REGular Express 5.5

需要在VBE编辑器中操作,菜单栏“工具-引用”,找到引入文件项:Microsoft VBScript REGular Express 5.5,选择。

然后新建一个模块,编辑如下过程:

编辑完成后,在工作表中进行函数引用。

如:在工作表C1中输入公式:=SumValueToText(B1)

功能就是计算B1单元格中的所有数据并进行求和,返回一个和值。

如下图所示,计算所有水果的总价。

方法二:后期绑定

后期绑定不需要进行文件引用,但需要进行创建对象。

创建代码:Set xRegExp = CreateObject("Vbscript.Regexp")

创建之后的对象 xRegExp进行匹配操作

.Pattern = "([0-9])?[.]([0-9])+|([0-9])+" '匹配字符模式

Set xMatches = .Execute(TargetRange.Text) '执行正则查找,返回所有匹配结果的集合,若未找到,则为空

如果对引用方法操作不熟悉,或者需要在不同电脑上使用建议用第二种方法。

代码:

Function SumValueInText(TargetRange As Range) As Double    Dim xRegExp As Object       '正则表达式对象    Dim xMatches As Object      '匹配字符串集合对象    Dim xMatch As Object        '匹配字符串    Set xRegExp = CreateObject("Vbscript.Regexp")    With xRegExp        .Global = True                   'True表示匹配所有, False表示仅匹配第一个符合项        .IgnoreCase = True            'True表示不区分大小写, False表示区分大小写        .Pattern = "([0-9])?[.]([0-9])+|([0-9])+"   '匹配字符模式        Set xMatches = .Execute(TargetRange.Text)   '执行正则查找,返回所有匹配结果的集合,若未找到,则为空        For Each xMatch In xMatches            SumValueInText = SumValueInText + CDbl(xMatch.Value)        Next    End With    Set xRegExp = Nothing    Set xMatches = NothingEnd Function

正则表达式进行筛选是十分便捷的一过程,在编程过程中,熟悉并使用这些功能可大大提高效率。

END

标签: #vba数字转换为字符串的方法 #vbs 转换字符串为数字 #正则表达式提取数字