打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA之正则表达式(3)-- 特殊公式计算

实例需求:

数据保存在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进行处理,示例代码使用正则替换,代码就很简洁了。

作者:taller

微软全球最有价值专家

ExcelHome技术论坛VBA版块版主

EH论坛VBA系列图书主创人

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA之正则表达式(15)
在VBA中使用Excel公式 | 完美Excel
VBA中调用excel的函数
Evaluate 方法
VBA技巧:使用数组复制不同的列
VBA实用小程序10:获取文本字符串中的文本或者数字
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服