http://www.pptjcw.com

表格制作excel教程:VBA之正则表达式:提取日期和金额

    实例需求:数据保存在A列中,需要将其中的日期和金额分别提取至B列和C列。其中日期也两种不同格式,金额可能包含小数点、千分符和货币标识。

    表格制作excel教程:VBA之正则表达式:提取日期和金额

    示例代码如下:
    Sub RegExp_Date_Num()
    Dim Res()
    Dim objRegEx As Object
    Dim objMH As Object
    Dim j As Integer
    Set objRegEx = CreateObject("vbscript.regexp")
    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行代码指定正则匹配字符串,

    表格制作excel教程:VBA之正则表达式:提取日期和金额

    如果直接使用[\d.,]+匹配金额中的数字,则会匹配到单个小数点或者逗号,例如数据为:旧的一年结束,元旦将要来临,此模式可以将匹配到,元。由此可见组织一个严谨的正则表达式需要考虑很多情况。
    第8行代码设置为全局搜索模式。
    第9行代码第16行代码循环处理工作表中的数据。
    第11行代码执行正则匹配,返回结果为MatchCollection集合对象。
    第13行和第14行代码分别将日期和金额写入工作表中

    提示:如果您觉得本文不错,请点击分享给您的好友!谢谢

    上一篇:excel入门教程:Excel版倒计时牌 下一篇:excel怎么做表格:任意条件查数据,简单才是硬道理

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读