0
点赞
收藏
分享

微信扫一扫

VBA之正则表达式(34)-- 提取照片规格

实例需求:按照指定规则从A数据提取相应的规格至B和C列,示例数据如下所示。

在这里插入图片描述

示例代码如下。

Sub Demo()
    Dim regExp As Object
    Dim aRes, arr
    Set regExp = CreateObject("vbscript.regExp")
    regExp.Global = True
    regExp.Pattern = "([\d\.]+)x(\d+(\.\d+)*)"
    arr = [a1].CurrentRegion.Value
    For i = 2 To UBound(arr)
        Set objMatch = regExp.Execute(arr(i, 1))
        If objMatch.Count > 0 Then
            For j = 0 To 1
                arr(i, 2 + j) = objMatch(0).submatches(j)
            Next
        End If
    Next
    [a1].CurrentRegion.Value = arr
    Set regExp = Nothing
End Sub

【代码解析】
第4行代码创建正则表达式对象。
第5行代码设置全局匹配。
第6行代码设置匹配模式。
第7行代码读取A1单元格的当前数据区域内容。
第8~17行代码循环处理数据。
第9行代码执行正则匹配。
如果匹配成功,第11~13行代码使用For…Next循环结构读取匹配结果。

正则表达式说明
[\d\.]+)匹配一个或者多个数字或者小数点
x(\d+(\.\d+)*)匹配x之后的一个或者多个数字,之后可以跟随小数点和一个或者多个数字,也可以没有小数部分

第16行代码将拆分数据写入到工作表中。

在这里插入图片描述

举报

相关推荐

0 条评论