大数跨境
0
0

VBA正则小案例: 特殊公式计算

VBA正则小案例: 特殊公式计算 数据分析就用Excel
2021-12-05
0
导读:实例需求:数据保存在B列,其格式为规格1*数量1+规格2*数量2+ ...现在需要统计数量总和,如C列所示。


实例需求:


数据保存在B列,其格式为规格1*数量1+规格2*数量2+ ...


现在需要统计数量总和,如C列所示。


例如B3中明细为100*3+115*1对应的包装个数就是3+1。




示例代码如下。


Sub RegExpDemo()    Dim strTxt As String    Dim objRegEx As Object    Dim j As Integer    Set objRegEx = CreateObject("vbscript.regexp")    objRegEx.Pattern = "\d+\*"    objRegEx.Global = True    For Each c In Range([B2], Cells(Rows.Count, "B").End(xlUp))        strTxt = objRegEx.Replace(Trim(c.Value), "")        c.Offset(0, 1).Value = Application.Evaluate(strTxt)    Next    Set objRegEx = NothingEnd SubtSet objRegEx = NothingEnd Sub


【代码解析】


第5行代码使用后期绑定创建正则对象。


第6行代码指定正则匹配字符串。



第7行代码设置为全局搜索模式。


第9行代码使用正则替换,将匹配成功的字符串替换为空。


第10行代码利用工作表的函数Evaluate计算替换后的字符串表达式的值,并写入工作表中。


例如B7单元格内容如下,红色部分字符为正则匹配字符(包含星号),替换之后就成为简单的算式2+1+2,即使没有等号,也可以被函数Evaluate正确处理。



如果使用VBA的字符串函数实现这个需求,就需要多次使用Split和Instr进行处理,示例代码使用正则替换,代码就很简洁了。

【声明】内容源于网络
0
0
数据分析就用Excel
Excel易用宝专属公众号,分享Excel操作技巧、函数、公式、透视表、图表、VBA及Power BI教程,助您轻松提高办公效率,搞定数据分析!
内容 855
粉丝 0
数据分析就用Excel Excel易用宝专属公众号,分享Excel操作技巧、函数、公式、透视表、图表、VBA及Power BI教程,助您轻松提高办公效率,搞定数据分析!
总阅读33
粉丝0
内容855