VBA宏修改EXCEL数据:使用正则表达式,去掉末位数字,和数字前的下划线

首先分析需求,对于一个单元格的字符串,我们希望去掉字符串最后的一串数字,如果数字前是下划线"_",也去掉。例如:

abc_1处理之后应该是abc

abc_d1处理之后应该是abc_d

abc1_23处理之后应该是abc1


        要修改这样的数据,只需要去掉末尾符合要求的字符串即可。所以使用正则表达式查找符合要求的字符串,再使用replace方法将其替换掉。

一、正则表达式

首先,匹配数字使用[0-9],或者\d(此处我使用\d)。一串数字说明不止一位数字,所以需要使用正则表达式中的限定符"+”匹配前面的子表达式一次或多次(此时得出匹配最后一串数字的正则表达式是\d+)。

接着,数字前面如果存在"_"也要去掉,所以使用限定符"?"匹配前面的子表达式零次或一次(此时得出匹配最后一串数字的正则表达式是_?\d+)。

最后,只需要去掉末尾的符合条件的字符串,所以使用定位符"$"匹配输入字符串结尾的位置。得出表达式为_?\d+$

二、EXCEL使用VBA自定义函数

1.使用正则表达式

VBA使用正则表达式,创建代码如下(示例):

With CreateObject("vbscript.regexp")
        .Global = True
        .Pattern = 正则表达式
        
End With

2.打开EXCEL宏

点击开发工具,选择VB宏,创建模块,如下图所示:

 图一

  图二

3.定义函数

创建代码如下(示例):

Function splitlastnumber(str As String)
 '正则表达式
With CreateObject("vbscript.regexp")
        .Global = True
        .Pattern = "_?\d+$"
        splitlastnumber = .Replace(str, "")
        
End With

End Function

        保存函数。在sheet中选中单元格,插入函数(此处我的命名是splitlastnumber),在全部函数里面查找,选择自定义的函数,

图三

图四

处理列1的数据,将替换后的数据在列2展示出来。

图五

 至此,完成替换。

总结

        本篇记录了在excel中使用VBA宏,以及VBA宏中的函数实现、Replace的用法和正则表达式的使用。完成了去掉字符串末位数字,和数字前的下划线的需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值