实例需求:按照指定规则从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行代码将拆分数据写入到工作表中。