有时需要对EXCEL中的有一定规律,但不相同的字符串进行替换,这时用基本的EXCEL查找/替换功能就无法实现了。比如希望将下图中的序列号(数字.)替换为空字符串,该如何实现呢?
这里可以利用VBA通过正则表达式进行查找并替换。代码如下:
Private Sub RegEx_Replace()
DimmyRegExp As Object
DimMyrange As Range, C As Range
SetmyRegExp = CreateObject("vbscript.regexp")
SetMyrange = ActiveSheet.Range("A1:A6")
ForEach C In Myrange
myRegExp.Pattern ="^\d+.\s*"
Set myMatches =myRegExp.Execute(C.Value)
If myMatches.Count >= 1Then
Set myMatch = myMatches(0)
C.Value = myRegExp.Replace(C.Value, "")
End If
Next
End Sub
执行结果:
其原理主要是通过创建正则式对象并执行相应的正则式以实现查找/替换的目的,过程如下:- 声明正则式对象;
- 赋值给该对象,包括全局性、大小写模式、正则式内容;
- 执行正则表达式。
- 执行正则表达式时,我们有3种函数可用:Test、Execute、Replace。
正则式对象方法:
- Test:检测目标文本与正则式是否匹配,返回True orFalse。
- Execute:检测是否匹配,并返回匹配集合,供后续程序调用处理。
- Replace:执行替换操作。在替换时,可以使用$1,$2等捕获变量,与常规的正则表达式意义相同
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。