VBA之正则表达式:提取⽇期和⾦额
实例需求:数据保存在A列中,需要将其中的⽇期和⾦额分别提取⾄B列和C列。其中⽇期也两种不同格式,⾦额可能包含⼩数点、千分符和货币标识。
⽰例代码如下:
Sub RegExp_Date_Num()
Dim Res()
Dim objRegEx As Object
Dim objMH As Object
Dim j As Integer
Set objRegEx = CreateObject("p")
objRegEx.Pattern = "(\d{4}-\d{2}-\d{2}|\d{4}.\d{2}.\d{2}).*?(([A-Z]{3})*\d+[\d.,]*元)"
objRegEx.Global = True
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
form = Cells(i, "A")
Set objMH = objRegEx.Execute(form)
If objMH.Count > 0 Then
Cells(i, 2) = CStr(objMH(0).submatches(0))
Cells(i, 3) = CStr(objMH(0).submatches(1))
End If
Next
Set objRegEx = Nothing
Set objMH = Nothing
End Sub
【代码解析】
第6⾏代码使⽤后期绑定创建正则对象。
正则表达式提取中文第7⾏代码指定正则匹配字符串,
如果直接使⽤[\d.,]+匹配⾦额中的数字,则会匹配到单个⼩数点或者逗号,例如数据为:旧的⼀年结束,元旦将要来临,此模式可以将匹配到,元。由此可见组织⼀个严谨的正则表达式需要考虑很多情况。
第8⾏代码设置为全局搜索模式。
第9⾏代码第16⾏代码循环处理⼯作表中的数据。
第11⾏代码执⾏正则匹配,返回结果为MatchCollection集合对象。
第13⾏和第14⾏代码分别将⽇期和⾦额写⼊⼯作表中

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。