VBA:正则表达式(4) -提取日期和金额

2023-09-24 20:15:42 浏览数 (2)

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

采用的VBA代码如下:

代码语言:javascript复制
Sub RegExp_Date_Num()

    '提取日期和金额
    
    Dim objRegEx As Object
    
    Dim objMH As Object
    
    Dim ii As Integer, form As String
    
    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 ii = 2 To Cells(Rows.Count, "A").End(xlUp).Row
    
        form = Cells(ii, "A").Value2
        
        Set objMH = objRegEx.Execute(form)
        
        If objMH.Count > 0 Then
        
            MsgBox objMH.Count
            
            Cells(ii, 2) = CStr(objMH(0).submatches(0))
            
            Cells(ii, 3) = CStr(objMH(0).submatches(1))
            
        End If
        
    Next
    
    Set objRegEx = Nothing
    
    Set objMH = Nothing
    
    Exit Sub
    
End Sub

(1)字符|称为管道。希望匹配许多表达式中的一个时,就可以使用它。(d{4}-d{2}-d{2}|d{4}.d{2}.d{2}),用于匹配两种日期格式。

(2).*?,使用非贪心模式匹配所有文本。

(3)*,匹配零次或多次前面的分组。

参考资料:

[1] VBA之正则表达式(4)-- 提取日期和金额(https://blog.csdn.net/taller_2000/article/details/88366081

[2] Python编程快速上手(第2版)(https://book.douban.com/subject/35387685/

0 人点赞